From 27f17fc94cd0b28e2c26d74c95d4270f30c8efbd Mon Sep 17 00:00:00 2001 From: Martchus Date: Sat, 14 Sep 2019 19:14:45 +0200 Subject: [PATCH] Use aboutToQuit() signal for cleanup-code As recommended by the Qt documentation --- tray/application/main.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/tray/application/main.cpp b/tray/application/main.cpp index 954a07a..0da0fe0 100644 --- a/tray/application/main.cpp +++ b/tray/application/main.cpp @@ -117,6 +117,12 @@ void trigger(bool tray, bool webUi) } } +void shutdownSyncthingTray() +{ + Settings::save(); + Settings::Launcher::terminate(); +} + int runApplication(int argc, const char *const *argv) { // setup argument parser @@ -173,17 +179,16 @@ int runApplication(int argc, const char *const *argv) QObject::connect(&service, &SyncthingService::errorOccurred, &handleSystemdServiceError); #endif - // show (first) tray icon and enter main event loop - auto res = initSyncthingTray(windowedArg.isPresent(), waitForTrayArg.isPresent(), connectionArg.firstValue()); - if (!res) { - trigger(triggerArg.isPresent(), showWebUiArg.isPresent()); - res = application.exec(); + // init Syncthing Tray and immediately shutdown on failure + if (const auto res = initSyncthingTray(windowedArg.isPresent(), waitForTrayArg.isPresent(), connectionArg.firstValue())) { + shutdownSyncthingTray(); + return res; } - // perform cleanup, then terminate - Settings::Launcher::terminate(); - Settings::save(); - return res; + // trigger UI and enter event loop + QObject::connect(&application, &QCoreApplication::aboutToQuit, &shutdownSyncthingTray); + trigger(triggerArg.isPresent(), showWebUiArg.isPresent()); + return application.exec(); } // trigger actions if --webui or --trigger is present but don't create a new tray icon