Explorar o código

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
ReinUsesLisp %!s(int64=7) %!d(string=hai) anos
pai
achega
9ff72ca9f2
Modificáronse 2 ficheiros con 10 adicións e 14 borrados
  1. 8 13
      src/yuzu/bootmanager.cpp
  2. 2 1
      src/yuzu/bootmanager.h

+ 8 - 13
src/yuzu/bootmanager.cpp

@@ -340,21 +340,16 @@ std::unique_ptr<Core::Frontend::GraphicsContext> 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);

+ 2 - 1
src/yuzu/bootmanager.h

@@ -166,7 +166,8 @@ private:
     void OnMinimalClientAreaChangeRequest(
         const std::pair<unsigned, unsigned>& minimal_size) override;
 
-    GGLWidgetInternal* child;
+    QWidget* container = nullptr;
+    GGLWidgetInternal* child = nullptr;
 
     QByteArray geometry;