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.
This commit is contained in:
Wladimir J. van der Laan 2014-07-15 16:26:16 +02:00
parent c715ff52c7
commit 33357b27a0
No known key found for this signature in database
GPG key ID: 74810B012346C9A6

View file

@ -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)
void BitcoinApplication::startThread()
{
if(coreThread)
return;
coreThread = new QThread(this);
BitcoinCore *executor = new BitcoinCore();
executor->moveToThread(coreThread);
@ -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();