void QQmlThreadPrivate::mainEvent() { lock(); m_mainProcessing = true; while (!mainList.isEmpty() || mainSync) { bool isSync = mainSync != 0; QQmlThread::Message *message = isSync?mainSync:mainList.takeFirst(); unlock(); message->call(q); delete message; lock(); if (isSync) { mainSync = 0; wakeOne(); } } m_mainProcessing = false; unlock(); }
void QQmlThreadPrivate::threadEvent() { lock(); if (m_shutdown) { quit(); wakeOne(); unlock(); q->shutdownThread(); } else { m_threadProcessing = true; while (!threadList.isEmpty()) { QQmlThread::Message *message = threadList.first(); unlock(); message->call(q); lock(); delete threadList.takeFirst(); } wakeOne(); m_threadProcessing = false; unlock(); } }
void QQmlThreadPrivate::threadEvent() { lock(); for (;;) { if (m_shutdown) { quit(); wakeOne(); unlock(); return; } else if (!threadList.isEmpty()) { m_threadProcessing = true; QQmlThread::Message *message = threadList.first(); unlock(); message->call(q); lock(); delete threadList.takeFirst(); } else { wakeOne(); m_threadProcessing = false; unlock(); return; } } }