diff options
| author | xiphon <xiphon@protonmail.com> | 2020-02-16 15:01:17 +0000 |
|---|---|---|
| committer | xiphon <xiphon@protonmail.com> | 2020-02-16 15:01:17 +0000 |
| commit | 636ca1c41dc5fb56b9af4140f4896508de779e64 (patch) | |
| tree | 49215c4bde3301f33fcc9c23998078502cd4e15b | |
| parent | eb7fae92ef0ed01a1d17e56fac217c6450716ccc (diff) | |
| download | monzero-gui-636ca1c41dc5fb56b9af4140f4896508de779e64.tar.gz monzero-gui-636ca1c41dc5fb56b9af4140f4896508de779e64.tar.xz monzero-gui-636ca1c41dc5fb56b9af4140f4896508de779e64.zip | |
DaemonManager: async stop, simple mode wizard - show splash on stop
| -rw-r--r-- | main.qml | 15 | ||||
| -rw-r--r-- | src/daemon/DaemonManager.cpp | 22 | ||||
| -rw-r--r-- | src/daemon/DaemonManager.h | 2 |
3 files changed, 18 insertions, 21 deletions
@@ -678,9 +678,12 @@ ApplicationWindow { daemonManager.start(flags, persistentSettings.nettype, persistentSettings.blockchainDataDir, persistentSettings.bootstrapNodeAddress, noSync); } - function stopDaemon(){ + function stopDaemon(callback){ appWindow.showProcessingSplash(qsTr("Waiting for daemon to stop...")) - daemonManager.stop(persistentSettings.nettype); + daemonManager.stopAsync(persistentSettings.nettype, function(result) { + hideProcessingSplash(); + callback(result); + }); } function onDaemonStarted(){ @@ -694,8 +697,6 @@ ApplicationWindow { simpleModeConnectionTimer.start(); } function onDaemonStopped(){ - console.log("daemon stopped"); - hideProcessingSplash(); currentWallet.connected(true); } @@ -1927,8 +1928,7 @@ ApplicationWindow { onClose(); } confirmationDialog.onRejectedCallback = function() { - daemonManager.stop(persistentSettings.nettype); - onClose(); + stopDaemon(onClose); }; confirmationDialog.open(); } @@ -1955,8 +1955,7 @@ ApplicationWindow { // If daemon is running - prompt user before exiting if(typeof daemonManager != "undefined" && daemonRunning) { if (appWindow.walletMode == 0) { - stopDaemon(); - closeAccepted(); + stopDaemon(closeAccepted); } else { showDaemonIsRunningDialog(closeAccepted); } diff --git a/src/daemon/DaemonManager.cpp b/src/daemon/DaemonManager.cpp index 8d995458..40cf4d2b 100644 --- a/src/daemon/DaemonManager.cpp +++ b/src/daemon/DaemonManager.cpp @@ -153,21 +153,19 @@ bool DaemonManager::start(const QString &flags, NetworkType::Type nettype, const return true; } -bool DaemonManager::stop(NetworkType::Type nettype) +void DaemonManager::stopAsync(NetworkType::Type nettype, const QJSValue& callback) { - QString message; - sendCommand({"exit"}, nettype, message); - qDebug() << message; + const auto feature = m_scheduler.run([this, nettype] { + QString message; + sendCommand({"exit"}, nettype, message); - // Start stop watcher - Will kill if not shutting down - m_scheduler.run([this, nettype] { - if (stopWatcher(nettype)) - { - emit daemonStopped(); - } - }); + return QJSValueList({stopWatcher(nettype)}); + }, callback); - return true; + if (!feature.first) + { + QJSValue(callback).call(QJSValueList({false})); + } } bool DaemonManager::startWatcher(NetworkType::Type nettype) const diff --git a/src/daemon/DaemonManager.h b/src/daemon/DaemonManager.h index 4bbd3133..774aecb3 100644 --- a/src/daemon/DaemonManager.h +++ b/src/daemon/DaemonManager.h @@ -45,7 +45,7 @@ public: static DaemonManager * instance(const QStringList *args); Q_INVOKABLE bool start(const QString &flags, NetworkType::Type nettype, const QString &dataDir = "", const QString &bootstrapNodeAddress = "", bool noSync = false); - Q_INVOKABLE bool stop(NetworkType::Type nettype); + Q_INVOKABLE void stopAsync(NetworkType::Type nettype, const QJSValue& callback); Q_INVOKABLE bool noSync() const noexcept; // return true if daemon process is started |
