Merge pull request #5644 from liushuyu/master

bootmanager: fix memory leaks when loading save states
master
Pengfei Zhu 2021-03-06 16:23:24 +07:00 committed by GitHub
commit 8e3c7674d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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)
: QWindow(parent), context(new QOpenGLContext(shared_context->parent())),
: QWindow(parent), context(std::make_unique<QOpenGLContext>(shared_context->parent())),
event_handler(event_handler) {
// disable vsync for any shared contexts
@ -447,8 +447,8 @@ std::unique_ptr<Frontend::GraphicsContext> GRenderWindow::CreateSharedContext()
}
GLContext::GLContext(QOpenGLContext* shared_context)
: context(new QOpenGLContext(shared_context->parent())),
surface(new QOffscreenSurface(nullptr)) {
: context(std::make_unique<QOpenGLContext>(shared_context->parent())),
surface(std::make_unique<QOffscreenSurface>(nullptr)) {
// disable vsync for any shared contexts
auto format = shared_context->format();
@ -463,7 +463,7 @@ GLContext::GLContext(QOpenGLContext* shared_context)
}
void GLContext::MakeCurrent() {
context->makeCurrent(surface);
context->makeCurrent(surface.get());
}
void GLContext::DoneCurrent() {

@ -6,6 +6,7 @@
#include <atomic>
#include <condition_variable>
#include <memory>
#include <mutex>
#include <QThread>
#include <QWidget>
@ -36,8 +37,8 @@ public:
void DoneCurrent() override;
private:
QOpenGLContext* context;
QOffscreenSurface* surface;
std::unique_ptr<QOpenGLContext> context;
std::unique_ptr<QOffscreenSurface> surface;
};
class EmuThread final : public QThread {
@ -138,7 +139,7 @@ protected:
void exposeEvent(QExposeEvent* event) override;
private:
QOpenGLContext* context;
std::unique_ptr<QOpenGLContext> context;
QWidget* event_handler;
};