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

Loading…
Cancel
Save