From 9a2305a1b3075d110f4127a3d3c38b014237968a Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Wed, 8 Jan 2014 10:45:00 +0100 Subject: [PATCH] qt: Stop shutdown detection timer during shutdown Stop the shutdown timer from exiting the main loop when shutdown is already in progress. Fixes seeming hanging window after typing 'stop' in debug console. Also hide the debug console during shutdown as it is useless without a core to connect to. --- src/qt/bitcoin.cpp | 5 ++++- src/qt/bitcoingui.cpp | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 098b17490..45551657d 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -193,6 +193,7 @@ private: ClientModel *clientModel; BitcoinGUI *window; WalletModel *walletModel; + QTimer *pollShutdownTimer; int returnValue; void startThread(); @@ -250,6 +251,7 @@ BitcoinApplication::BitcoinApplication(int &argc, char **argv): clientModel(0), window(0), walletModel(0), + pollShutdownTimer(0), returnValue(0) { setQuitOnLastWindowClosed(false); @@ -282,7 +284,7 @@ void BitcoinApplication::createWindow(bool isaTestNet) { window = new BitcoinGUI(isaTestNet, 0); - QTimer* pollShutdownTimer = new QTimer(window); + pollShutdownTimer = new QTimer(window); connect(pollShutdownTimer, SIGNAL(timeout()), window, SLOT(detectShutdown())); pollShutdownTimer->start(200); } @@ -326,6 +328,7 @@ void BitcoinApplication::requestShutdown() window->hide(); window->setClientModel(0); window->removeAllWallets(); + pollShutdownTimer->stop(); delete walletModel; walletModel = 0; diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index f8daa08c4..ee27fe90a 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -855,7 +855,11 @@ void BitcoinGUI::toggleHidden() void BitcoinGUI::detectShutdown() { if (ShutdownRequested()) - QMetaObject::invokeMethod(QCoreApplication::instance(), "quit", Qt::QueuedConnection); + { + if(rpcConsole) + rpcConsole->hide(); + qApp->quit(); + } } static bool ThreadSafeMessageBox(BitcoinGUI *gui, const std::string& message, const std::string& caption, unsigned int style)