gui: Fix m_node.startShutdown() order
This change forwards the shutdown request on the GUI (close the application for instace) to the node as soon as possible. This way the GUI doesn't have to wait for long operations to complete (rescan the wallet for instance), instead those operations detect the shutdown request and abort/interrupt.
This commit is contained in:
parent
07b9aadcfc
commit
fd6d499bda
1 changed files with 8 additions and 2 deletions
|
@ -309,14 +309,20 @@ void BitcoinApplication::requestShutdown()
|
|||
qDebug() << __func__ << ": Requesting shutdown";
|
||||
startThread();
|
||||
window->hide();
|
||||
// Must disconnect node signals otherwise current thread can deadlock since
|
||||
// no event loop is running.
|
||||
window->unsubscribeFromCoreSignals();
|
||||
// Request node shutdown, which can interrupt long operations, like
|
||||
// rescanning a wallet.
|
||||
m_node.startShutdown();
|
||||
// Unsetting the client model can cause the current thread to wait for node
|
||||
// to complete an operation, like wait for a RPC execution to complate.
|
||||
window->setClientModel(nullptr);
|
||||
pollShutdownTimer->stop();
|
||||
|
||||
delete clientModel;
|
||||
clientModel = nullptr;
|
||||
|
||||
m_node.startShutdown();
|
||||
|
||||
// Request shutdown from core thread
|
||||
Q_EMIT requestedShutdown();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue