From 9ff72ca9f2147ff41101d60fb806357825d5aa53 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Mon, 25 Mar 2019 16:41:48 -0300 Subject: bootmanager: Delete container to avoid crash on game restarting While we are at it, remove nullptr checks for deletion, since the C++ standard defines that delete does it by its own --- src/yuzu/bootmanager.cpp | 21 ++++++++------------- src/yuzu/bootmanager.h | 3 ++- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp index ea55e68ba..8445d9fe3 100644 --- a/src/yuzu/bootmanager.cpp +++ b/src/yuzu/bootmanager.cpp @@ -340,21 +340,16 @@ std::unique_ptr GRenderWindow::CreateSharedCont } void GRenderWindow::InitRenderTarget() { - if (shared_context) { - shared_context.reset(); - } + shared_context.reset(); + context.reset(); - if (context) { - context.reset(); - } + delete child; + child = nullptr; - if (child) { - delete child; - } + delete container; + container = nullptr; - if (layout()) { - delete layout(); - } + delete layout(); first_frame = false; @@ -375,7 +370,7 @@ void GRenderWindow::InitRenderTarget() { fmt.setSwapInterval(false); child = new GGLWidgetInternal(this, shared_context.get()); - QWidget* container = QWidget::createWindowContainer(child, this); + container = QWidget::createWindowContainer(child, this); QBoxLayout* layout = new QHBoxLayout(this); resize(Layout::ScreenUndocked::Width, Layout::ScreenUndocked::Height); diff --git a/src/yuzu/bootmanager.h b/src/yuzu/bootmanager.h index d2a440d0d..c2f2fe87e 100644 --- a/src/yuzu/bootmanager.h +++ b/src/yuzu/bootmanager.h @@ -166,7 +166,8 @@ private: void OnMinimalClientAreaChangeRequest( const std::pair& minimal_size) override; - GGLWidgetInternal* child; + QWidget* container = nullptr; + GGLWidgetInternal* child = nullptr; QByteArray geometry; -- cgit v1.2.3