Browse Source

qt: Start core thread only when needed

Start the core thread only when needed for initialization
or shutdown.

Avoids a bit of overhead, and also avoids spamming two
log messages before logging is properly initialized.
0.10
Wladimir J. van der Laan 11 years ago
parent
commit
33357b27a0
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
  1. 16
      src/qt/bitcoin.cpp

16
src/qt/bitcoin.cpp

@ -286,15 +286,17 @@ BitcoinApplication::BitcoinApplication(int &argc, char **argv):
returnValue(0) returnValue(0)
{ {
setQuitOnLastWindowClosed(false); setQuitOnLastWindowClosed(false);
startThread();
} }
BitcoinApplication::~BitcoinApplication() BitcoinApplication::~BitcoinApplication()
{ {
qDebug() << __func__ << ": Stopping thread"; if(coreThread)
emit stopThread(); {
coreThread->wait(); qDebug() << __func__ << ": Stopping thread";
qDebug() << __func__ << ": Stopped thread"; emit stopThread();
coreThread->wait();
qDebug() << __func__ << ": Stopped thread";
}
delete window; delete window;
window = 0; window = 0;
@ -337,6 +339,8 @@ void BitcoinApplication::createSplashScreen(bool isaTestNet)
void BitcoinApplication::startThread() void BitcoinApplication::startThread()
{ {
if(coreThread)
return;
coreThread = new QThread(this); coreThread = new QThread(this);
BitcoinCore *executor = new BitcoinCore(); BitcoinCore *executor = new BitcoinCore();
executor->moveToThread(coreThread); executor->moveToThread(coreThread);
@ -357,12 +361,14 @@ void BitcoinApplication::startThread()
void BitcoinApplication::requestInitialize() void BitcoinApplication::requestInitialize()
{ {
qDebug() << __func__ << ": Requesting initialize"; qDebug() << __func__ << ": Requesting initialize";
startThread();
emit requestedInitialize(); emit requestedInitialize();
} }
void BitcoinApplication::requestShutdown() void BitcoinApplication::requestShutdown()
{ {
qDebug() << __func__ << ": Requesting shutdown"; qDebug() << __func__ << ": Requesting shutdown";
startThread();
window->hide(); window->hide();
window->setClientModel(0); window->setClientModel(0);
pollShutdownTimer->stop(); pollShutdownTimer->stop();

Loading…
Cancel
Save