From cfb59aad3ff5ab782a0c4212c3085094e15d7ede Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 29 May 2019 01:53:30 -0400 Subject: [PATCH] yuzu/bootmanager: Remove pointer downcast in GRenderWindow's constructor We can just pass a pointer to GMainWindow directly and make it a requirement of the interface. This makes the interface a little safer, since this would technically otherwise allow any random QWidget to be the parent of a render window, downcasting it to GMainWindow (which is undefined behavior). --- src/yuzu/bootmanager.cpp | 5 ++--- src/yuzu/bootmanager.h | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp index d9d2a8a4c..a4b89eed8 100644 --- a/src/yuzu/bootmanager.cpp +++ b/src/yuzu/bootmanager.cpp @@ -185,7 +185,7 @@ private: bool do_painting; }; -GRenderWindow::GRenderWindow(QWidget* parent, EmuThread* emu_thread) +GRenderWindow::GRenderWindow(GMainWindow* parent, EmuThread* emu_thread) : QWidget(parent), emu_thread(emu_thread) { setWindowTitle(QStringLiteral("yuzu %1 | %2-%3") .arg(QString::fromUtf8(Common::g_build_name), @@ -194,8 +194,7 @@ GRenderWindow::GRenderWindow(QWidget* parent, EmuThread* emu_thread) setAttribute(Qt::WA_AcceptTouchEvents); InputCommon::Init(); - connect(this, &GRenderWindow::FirstFrameDisplayed, static_cast(parent), - &GMainWindow::OnLoadComplete); + connect(this, &GRenderWindow::FirstFrameDisplayed, parent, &GMainWindow::OnLoadComplete); } GRenderWindow::~GRenderWindow() { diff --git a/src/yuzu/bootmanager.h b/src/yuzu/bootmanager.h index 7f9f8e8e3..5a1ebd0fe 100644 --- a/src/yuzu/bootmanager.h +++ b/src/yuzu/bootmanager.h @@ -114,7 +114,7 @@ class GRenderWindow : public QWidget, public Core::Frontend::EmuWindow { Q_OBJECT public: - GRenderWindow(QWidget* parent, EmuThread* emu_thread); + GRenderWindow(GMainWindow* parent, EmuThread* emu_thread); ~GRenderWindow() override; // EmuWindow implementation