void CoreWin32Platform::Run() { Core::Instance()->SystemAppStarted(); MSG msg; while(1) { DAVA::uint64 startTime = DAVA::SystemTimer::Instance()->AbsoluteMS(); // process messages willQuit = false; while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); if(msg.message == WM_QUIT) { ApplicationCore * appCore = Core::Instance()->GetApplicationCore(); if(appCore && appCore->OnQuit()) { exit(0); } else { willQuit = true; } } } RenderManager::Instance()->Lock(); Core::SystemProcessFrame(); RenderManager::Instance()->Unlock(); uint32 elapsedTime = (uint32) (SystemTimer::Instance()->AbsoluteMS() - startTime); int32 sleepMs = 1; int32 fps = RenderManager::Instance()->GetFPS(); if(fps > 0) { sleepMs = (1000 / fps) - elapsedTime; if(sleepMs < 1) { sleepMs = 1; } } Sleep(sleepMs); if (willQuit) { break; } } Core::Instance()->SystemAppFinished(); FrameworkWillTerminate(); }
void CoreWin32Platform::Run() { Core::Instance()->SystemAppStarted(); MSG msg; while(1) { // process messages willQuit = false; while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); if(msg.message == WM_QUIT) { ApplicationCore * appCore = Core::Instance()->GetApplicationCore(); if(appCore && appCore->OnQuit()) { exit(0); } else { willQuit = true; } } } Sleep(1); RenderManager::Instance()->Lock(); Core::SystemProcessFrame(); RenderManager::Instance()->Unlock(); if (willQuit) { break; } } Core::Instance()->SystemAppFinished(); FrameworkWillTerminate(); }