mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	bootmanager: fix memory leaks when loading save states
This commit is contained in:
		
							parent
							
								
									7c6d7905a4
								
							
						
					
					
						commit
						8290423d16
					
				
					 2 changed files with 8 additions and 7 deletions
				
			
		|  | @ -104,7 +104,7 @@ void EmuThread::run() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| OpenGLWindow::OpenGLWindow(QWindow* parent, QWidget* event_handler, QOpenGLContext* shared_context) | OpenGLWindow::OpenGLWindow(QWindow* parent, QWidget* event_handler, QOpenGLContext* shared_context) | ||||||
|     : QWindow(parent), context(new QOpenGLContext(shared_context->parent())), |     : QWindow(parent), context(std::make_unique<QOpenGLContext>(shared_context->parent())), | ||||||
|       event_handler(event_handler) { |       event_handler(event_handler) { | ||||||
| 
 | 
 | ||||||
|     // disable vsync for any shared contexts
 |     // disable vsync for any shared contexts
 | ||||||
|  | @ -447,8 +447,8 @@ std::unique_ptr<Frontend::GraphicsContext> GRenderWindow::CreateSharedContext() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| GLContext::GLContext(QOpenGLContext* shared_context) | GLContext::GLContext(QOpenGLContext* shared_context) | ||||||
|     : context(new QOpenGLContext(shared_context->parent())), |     : context(std::make_unique<QOpenGLContext>(shared_context->parent())), | ||||||
|       surface(new QOffscreenSurface(nullptr)) { |       surface(std::make_unique<QOffscreenSurface>(nullptr)) { | ||||||
| 
 | 
 | ||||||
|     // disable vsync for any shared contexts
 |     // disable vsync for any shared contexts
 | ||||||
|     auto format = shared_context->format(); |     auto format = shared_context->format(); | ||||||
|  | @ -463,7 +463,7 @@ GLContext::GLContext(QOpenGLContext* shared_context) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GLContext::MakeCurrent() { | void GLContext::MakeCurrent() { | ||||||
|     context->makeCurrent(surface); |     context->makeCurrent(surface.get()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GLContext::DoneCurrent() { | void GLContext::DoneCurrent() { | ||||||
|  |  | ||||||
|  | @ -6,6 +6,7 @@ | ||||||
| 
 | 
 | ||||||
| #include <atomic> | #include <atomic> | ||||||
| #include <condition_variable> | #include <condition_variable> | ||||||
|  | #include <memory> | ||||||
| #include <mutex> | #include <mutex> | ||||||
| #include <QThread> | #include <QThread> | ||||||
| #include <QWidget> | #include <QWidget> | ||||||
|  | @ -36,8 +37,8 @@ public: | ||||||
|     void DoneCurrent() override; |     void DoneCurrent() override; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     QOpenGLContext* context; |     std::unique_ptr<QOpenGLContext> context; | ||||||
|     QOffscreenSurface* surface; |     std::unique_ptr<QOffscreenSurface> surface; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class EmuThread final : public QThread { | class EmuThread final : public QThread { | ||||||
|  | @ -138,7 +139,7 @@ protected: | ||||||
|     void exposeEvent(QExposeEvent* event) override; |     void exposeEvent(QExposeEvent* event) override; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     QOpenGLContext* context; |     std::unique_ptr<QOpenGLContext> context; | ||||||
|     QWidget* event_handler; |     QWidget* event_handler; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue