Performance: avoid long sleep in processEvents loop.

This commit is contained in:
Mathew Sutcliffe
2016-10-16 16:57:42 +01:00
parent 7320969888
commit cafd724aaf

View File

@@ -248,14 +248,10 @@ namespace BlackCore
bool CApplication::waitForStart() bool CApplication::waitForStart()
{ {
// process events return immediatley if nothing is to be processed QEventLoop eventLoop;
const QTime dieTime = QTime::currentTime().addMSecs(5000); QTimer::singleShot(5000, &eventLoop, &QEventLoop::quit);
while (QTime::currentTime() < dieTime && !this->m_started && !this->m_startUpCompleted) connect(this, &CApplication::setupAvailable, &eventLoop, &QEventLoop::quit);
{ eventLoop.exec();
// Alternative: use QEventLoop, which seemed to make the scenario here more complex
QCoreApplication::instance()->processEvents(QEventLoop::AllEvents, 250);
QThread::msleep(250); // avoid CPU loop overload by "infinite loop"
}
if (!this->m_startUpCompleted) if (!this->m_startUpCompleted)
{ {
CLogMessage(this).error("Waiting for startup timed out"); CLogMessage(this).error("Waiting for startup timed out");