void ApplicationManager::onWindowCreatedTimerTimeout() { if (QGuiApplication::topLevelWindows().count() > 0) { m_windowCreatedTimer.stop(); onWindowCreated(); } }
void RenderThread::processMessage (const Message& message) { DBG_PRINT(("RenderThread::processMessage(): message = { %s, %p }\n", getMessageTypeName(message.type), message.payload.window)); switch (message.type) { case MESSAGE_RESUME: m_paused = false; break; case MESSAGE_PAUSE: m_paused = true; break; case MESSAGE_FINISH: m_finish = true; break; // \note While Platform / WindowRegistry are currently multi-window -capable, // the fact that platform gives us windows too late / at unexpected times // forces us to do some sanity checking and limit system to one window here. case MESSAGE_WINDOW_CREATED: if (m_windowState != WINDOWSTATE_NOT_CREATED && m_windowState != WINDOWSTATE_DESTROYED) throw InternalError("Got unexpected onNativeWindowCreated() event from system"); m_windowState = WINDOWSTATE_NOT_INITIALIZED; m_window = message.payload.window; break; case MESSAGE_WINDOW_RESIZED: if (m_window != message.payload.window) throw InternalError("Got onNativeWindowResized() event targeting different window"); if (m_windowState == WINDOWSTATE_NOT_INITIALIZED) { // Got first resize event, window is ready for use. m_windowState = WINDOWSTATE_READY; onWindowCreated(message.payload.window); } else if (m_windowState == WINDOWSTATE_READY) onWindowResized(message.payload.window); else throw InternalError("Got unexpected onNativeWindowResized() event from system"); break; case MESSAGE_WINDOW_DESTROYED: if (m_window != message.payload.window) throw InternalError("Got onNativeWindowDestroyed() event targeting different window"); if (m_windowState != WINDOWSTATE_NOT_INITIALIZED && m_windowState != WINDOWSTATE_READY) throw InternalError("Got unexpected onNativeWindowDestroyed() event from system"); if (m_windowState == WINDOWSTATE_READY) onWindowDestroyed(message.payload.window); m_windowState = WINDOWSTATE_DESTROYED; m_window = DE_NULL; break; case MESSAGE_INPUT_QUEUE_CREATED: m_inputQueue = message.payload.inputQueue; break; case MESSAGE_INPUT_QUEUE_DESTROYED: m_inputQueue = message.payload.inputQueue; break; case MESSAGE_SYNC: message.payload.semaphore->increment(); break; default: throw std::runtime_error("Unknown message type"); break; } }