void MapWindow::CloseDrawingThread(void) { #ifndef ENABLE_OPENGL #if TESTBENCH StartupStore(_T("... CloseDrawingThread started\n")); #endif CLOSETHREAD = TRUE; drawTriggerEvent.set(); // wake self up SuspendDrawingThread(); #if TESTBENCH StartupStore(_T("... CloseDrawingThread waitforsingleobject\n")); #endif #ifdef __linux__ #else drawTriggerEvent.reset(); // on linux this is delaying 5000 #endif MapWindowThread.join(); #if TESTBENCH StartupStore(_T("... CloseDrawingThread wait THREADEXIT\n")); #endif while(!THREADEXIT) { Poco::Thread::sleep(50); }; #if TESTBENCH StartupStore(_T("... CloseDrawingThread finished\n")); #endif #else CLOSETHREAD = TRUE; THREADEXIT = TRUE; #endif }
void MapWindow::CloseDrawingThread(void) { #if TESTBENCH StartupStore(_T("... CloseDrawingThread started\n")); #endif CLOSETHREAD = TRUE; SetEvent(drawTriggerEvent); // wake self up LockTerrainDataGraphics(); SuspendDrawingThread(); UnlockTerrainDataGraphics(); #if TESTBENCH StartupStore(_T("... CloseDrawingThread waitforsingleobject\n")); #endif WaitForSingleObject(hDrawThread, INFINITE); #if TESTBENCH StartupStore(_T("... CloseDrawingThread wait THREADEXIT\n")); #endif while(!THREADEXIT) { Sleep(100); }; #if TESTBENCH StartupStore(_T("... CloseDrawingThread finished\n")); #endif }