ViewDraw::ViewDraw(Ctrl *ctrl) { EnterGuiMutex(); Ctrl *top = ctrl->GetTopCtrl(); cr = gdk_cairo_create(top->gdk()); Clipoff(ctrl->GetScreenView() - top->GetScreenRect().TopLeft()); }
void Ctrl::GuiSleep0(int ms) { GuiLock __; ASSERT(IsMainThread()); ELOG("GuiSleep"); if(EndSession()) return; ELOG("GuiSleep 2"); int level = LeaveGuiMutexAll(); #if !defined(flagDLL) && !defined(PLATFORM_WINCE) if(!OverwatchThread) { DWORD dummy; OverwatchThread = CreateThread(NULL, 0x100000, Win32OverwatchThread, NULL, 0, &dummy); ELOG("ExitLoopEventWait 1"); ExitLoopEvent().Wait(); } HANDLE h[1]; *h = ExitLoopEvent().GetHandle(); ELOG("ExitLoopEventWait 2 " << (void *)*h); MsgWaitForMultipleObjects(1, h, FALSE, ms, QS_ALLINPUT); #else MsgWaitForMultipleObjects(0, NULL, FALSE, ms, QS_ALLINPUT); #endif EnterGuiMutex(level); }
void Ctrl::FetchEvents(bool may_block) { LLOG("FetchEvents " << may_block); int level = LeaveGuiMutexAll(); while(g_main_context_iteration(NULL, may_block)) may_block = false; EnterGuiMutex(level); }
ViewDraw::ViewDraw(Ctrl *ctrl) { EnterGuiMutex(); Ctrl *top = ctrl->GetTopCtrl(); hwnd = top->GetHWND(); ASSERT(hwnd); Attach(GetDC(hwnd)); Clipoff(ctrl->GetScreenView() - top->GetScreenRect().TopLeft()); }
void Ctrl::GuiSleep0(int ms) { GuiLock __; ASSERT(IsMainThread()); LLOG("GuiSleep"); int level = LeaveGuiMutexAll(); FBSleep(ms); EnterGuiMutex(level); }
void Ctrl::GuiSleep(int ms) { GuiLock __; ASSERT(IsMainThread()); // LLOG("GuiSleep"); int level = LeaveGuiMutexAll(); socket.Timeout(ms).WaitRead(); socket.Timeout(20000); EnterGuiMutex(level); }
void InitGtkApp(int argc, char **argv, const char **envptr) { LLOG(rmsecs() << " InitGtkApp"); #ifdef _MULTITHREADED #if !GLIB_CHECK_VERSION(2, 32, 0) if(!g_thread_supported()) g_thread_init(NULL); #endif gdk_threads_set_lock_functions(EnterGuiMutex, LeaveGuiMutex); gdk_threads_init(); EnterGuiMutex(); #endif gtk_init(&argc, &argv); Ctrl::GlobalBackBuffer(); Ctrl::ReSkin(); g_timeout_add(20, (GSourceFunc) Ctrl::TimeHandler, NULL); InstallPanicMessageBox(Ctrl::PanicMsgBox); gdk_window_add_filter(NULL, Ctrl::RootKeyFilter, NULL); #if CATCH_ERRORS g_log_set_default_handler (CatchError, 0); #endif }
ViewDraw::ViewDraw(Ctrl *ctrl) { EnterGuiMutex(); }