Merge pull request #4534

33357b2 qt: Start core thread only when needed (Wladimir J. van der Laan)
c715ff5 ui: Replace some LogPrintfs with qDebug() (Wladimir J. van der Laan)
96ff9d6 Can't log to debug log before chain params initialized (Wladimir J. van der Laan)
This commit is contained in:
Wladimir J. van der Laan 2014-07-17 13:42:25 +02:00
commit 66f3d0679f
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
4 changed files with 30 additions and 13 deletions

View File

@ -91,3 +91,7 @@ bool SelectBaseParamsFromCommandLine() {
}
return true;
}
bool AreBaseParamsConfigured() {
return pCurrentBaseParams != NULL;
}

View File

@ -49,4 +49,10 @@ void SelectBaseParams(CBaseChainParams::Network network);
*/
bool SelectBaseParamsFromCommandLine();
/**
* Return true if SelectBaseParamsFromCommandLine() has been called to select
* a network.
*/
bool AreBaseParamsConfigured();
#endif

View File

@ -34,6 +34,7 @@
#include <boost/filesystem/operations.hpp>
#include <QApplication>
#include <QDebug>
#include <QLibraryInfo>
#include <QLocale>
#include <QMessageBox>
@ -237,7 +238,7 @@ void BitcoinCore::initialize()
{
try
{
LogPrintf("Running AppInit2 in thread\n");
qDebug() << __func__ << ": Running AppInit2 in thread";
int rv = AppInit2(threadGroup);
if(rv)
{
@ -258,11 +259,11 @@ void BitcoinCore::shutdown()
{
try
{
LogPrintf("Running Shutdown in thread\n");
qDebug() << __func__ << ": Running Shutdown in thread";
threadGroup.interrupt_all();
threadGroup.join_all();
Shutdown();
LogPrintf("Shutdown finished\n");
qDebug() << __func__ << ": Shutdown finished";
emit shutdownResult(1);
} catch (std::exception& e) {
handleRunawayException(&e);
@ -285,15 +286,17 @@ BitcoinApplication::BitcoinApplication(int &argc, char **argv):
returnValue(0)
{
setQuitOnLastWindowClosed(false);
startThread();
}
BitcoinApplication::~BitcoinApplication()
{
LogPrintf("Stopping thread\n");
emit stopThread();
coreThread->wait();
LogPrintf("Stopped thread\n");
if(coreThread)
{
qDebug() << __func__ << ": Stopping thread";
emit stopThread();
coreThread->wait();
qDebug() << __func__ << ": Stopped thread";
}
delete window;
window = 0;
@ -336,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);
@ -355,13 +360,15 @@ void BitcoinApplication::startThread()
void BitcoinApplication::requestInitialize()
{
LogPrintf("Requesting initialize\n");
qDebug() << __func__ << ": Requesting initialize";
startThread();
emit requestedInitialize();
}
void BitcoinApplication::requestShutdown()
{
LogPrintf("Requesting shutdown\n");
qDebug() << __func__ << ": Requesting shutdown";
startThread();
window->hide();
window->setClientModel(0);
pollShutdownTimer->stop();
@ -383,7 +390,7 @@ void BitcoinApplication::requestShutdown()
void BitcoinApplication::initializeResult(int retval)
{
LogPrintf("Initialization result: %i\n", retval);
qDebug() << __func__ << ": Initialization result: " << retval;
// Set exit result: 0 if successful, 1 if failure
returnValue = retval ? 0 : 1;
if(retval)
@ -438,7 +445,7 @@ void BitcoinApplication::initializeResult(int retval)
void BitcoinApplication::shutdownResult(int retval)
{
LogPrintf("Shutdown result: %i\n", retval);
qDebug() << __func__ << ": Shutdown result: " << retval;
quit(); // Exit main loop after shutdown finished
}

View File

@ -205,7 +205,7 @@ int LogPrintStr(const std::string &str)
// print to console
ret = fwrite(str.data(), 1, str.size(), stdout);
}
else if (fPrintToDebugLog)
else if (fPrintToDebugLog && AreBaseParamsConfigured())
{
static bool fStartedNewLine = true;
boost::call_once(&DebugPrintInit, debugPrintInitFlag);