From 66f65784a83ddd1fc0df0aaef739e36dbc36f2dd Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Thu, 21 Jul 2022 21:38:26 -0400 Subject: [PATCH] Fix more leaked memory due to QObject parents not being set --- launcher/core/include/launchercore.h | 1 - launcher/core/include/watchdog.h | 2 +- launcher/core/src/launchercore.cpp | 8 +------- launcher/core/src/sapphirelauncher.cpp | 2 +- launcher/core/src/squareboot.cpp | 2 +- launcher/core/src/squarelauncher.cpp | 2 +- launcher/desktop/src/assetupdater.cpp | 2 +- launcher/main.cpp | 6 +++--- 8 files changed, 9 insertions(+), 16 deletions(-) diff --git a/launcher/core/include/launchercore.h b/launcher/core/include/launchercore.h index 79599df..869a5d9 100755 --- a/launcher/core/include/launchercore.h +++ b/launcher/core/include/launchercore.h @@ -126,7 +126,6 @@ class LauncherCore : public QObject { Q_PROPERTY(SquareBoot* squareBoot MEMBER squareBoot) public: LauncherCore(); - ~LauncherCore(); // used for qml only, TODO: move this to a dedicated factory Q_INVOKABLE LoginInformation* createNewLoginInfo() { diff --git a/launcher/core/include/watchdog.h b/launcher/core/include/watchdog.h index d1e2630..a011a09 100644 --- a/launcher/core/include/watchdog.h +++ b/launcher/core/include/watchdog.h @@ -13,7 +13,7 @@ class Watchdog : public QObject { Q_OBJECT public: - Watchdog(LauncherCore& core) : core(core) {} + Watchdog(LauncherCore& core) : core(core), QObject(&core) {} void launchGame(const ProfileSettings& settings, LoginAuth auth); diff --git a/launcher/core/src/launchercore.cpp b/launcher/core/src/launchercore.cpp index e691803..14f9bd3 100755 --- a/launcher/core/src/launchercore.cpp +++ b/launcher/core/src/launchercore.cpp @@ -479,7 +479,7 @@ void LauncherCore::readWineInfo(ProfileSettings& profile) { #endif #if defined(Q_OS_LINUX) || defined(Q_OS_MAC) - auto wineProcess = new QProcess(); + auto wineProcess = new QProcess(this); wineProcess->setProcessChannelMode(QProcess::MergedChannels); connect(wineProcess, &QProcess::readyRead, this, [wineProcess, &profile] { @@ -543,12 +543,6 @@ LauncherCore::LauncherCore() : settings(QSettings::IniFormat, QSettings::UserSco readInitialInformation(); } -LauncherCore::~LauncherCore() noexcept { -#ifdef ENABLE_WATCHDOG - delete watchdog; -#endif -} - ProfileSettings& LauncherCore::getProfile(int index) { return *profileSettings[index]; } diff --git a/launcher/core/src/sapphirelauncher.cpp b/launcher/core/src/sapphirelauncher.cpp index cd8036a..6d81670 100644 --- a/launcher/core/src/sapphirelauncher.cpp +++ b/launcher/core/src/sapphirelauncher.cpp @@ -5,7 +5,7 @@ #include #include -SapphireLauncher::SapphireLauncher(LauncherCore& window) : window(window) { +SapphireLauncher::SapphireLauncher(LauncherCore& window) : window(window), QObject(&window) { } diff --git a/launcher/core/src/squareboot.cpp b/launcher/core/src/squareboot.cpp index ead50be..663d04d 100644 --- a/launcher/core/src/squareboot.cpp +++ b/launcher/core/src/squareboot.cpp @@ -12,7 +12,7 @@ #include "squarelauncher.h" -SquareBoot::SquareBoot(LauncherCore& window, SquareLauncher& launcher) : window(window), launcher(launcher) { +SquareBoot::SquareBoot(LauncherCore& window, SquareLauncher& launcher) : window(window), launcher(launcher), QObject(&window) { } diff --git a/launcher/core/src/squarelauncher.cpp b/launcher/core/src/squarelauncher.cpp index 25bd944..045fc2b 100644 --- a/launcher/core/src/squarelauncher.cpp +++ b/launcher/core/src/squarelauncher.cpp @@ -16,7 +16,7 @@ #include "watchdog.h" #endif -SquareLauncher::SquareLauncher(LauncherCore& window) : window(window) { +SquareLauncher::SquareLauncher(LauncherCore& window) : window(window), QObject(&window) { } diff --git a/launcher/desktop/src/assetupdater.cpp b/launcher/desktop/src/assetupdater.cpp index c807a97..49d5722 100644 --- a/launcher/desktop/src/assetupdater.cpp +++ b/launcher/desktop/src/assetupdater.cpp @@ -37,7 +37,7 @@ QMap channelToDistribPrefix = { {DalamudChannel::Net5, "net5/"} }; -AssetUpdater::AssetUpdater(LauncherCore& launcher) : launcher(launcher) { +AssetUpdater::AssetUpdater(LauncherCore& launcher) : launcher(launcher), QObject(&launcher) { launcher.mgr->setRedirectPolicy(QNetworkRequest::NoLessSafeRedirectPolicy); dataDir = diff --git a/launcher/main.cpp b/launcher/main.cpp index 153e96c..a8c12ca 100755 --- a/launcher/main.cpp +++ b/launcher/main.cpp @@ -49,7 +49,7 @@ int main(int argc, char* argv[]) { QCommandLineOption cliOption("cli", "Don't open a main window, and use the cli interface."); parser.addOption(cliOption); - auto cmd = new CMDInterface(parser); + auto cmd = std::make_unique(parser); parser.process(app); @@ -63,12 +63,12 @@ int main(int argc, char* argv[]) { LauncherCore c; if(parser.isSet(tabletOption)) { - new TabletInterface(c); + std::make_unique(c); } else if(parser.isSet(cliOption)) { if(!cmd->parse(parser, c)) return -1; } else { - new DesktopInterface(c); + std::make_unique(c); } return app.exec();