use GTK-specific GUI lock
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44245 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -247,18 +247,12 @@ static GPollFunc wxgs_poll_func;
|
||||
extern "C" {
|
||||
static gint wxapp_poll_func( GPollFD *ufds, guint nfds, gint timeout )
|
||||
{
|
||||
gdk_threads_enter();
|
||||
|
||||
wxMutexGuiLeave();
|
||||
g_mainThreadLocked = true;
|
||||
|
||||
gint res = (*wxgs_poll_func)(ufds, nfds, timeout);
|
||||
|
||||
wxMutexGuiEnter();
|
||||
g_mainThreadLocked = false;
|
||||
|
||||
gdk_threads_leave();
|
||||
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -408,6 +402,7 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
|
||||
#if wxUSE_THREADS
|
||||
if (!g_thread_supported())
|
||||
g_thread_init(NULL);
|
||||
gdk_threads_init();
|
||||
|
||||
wxgs_poll_func = g_main_context_get_poll_func(NULL);
|
||||
g_main_context_set_poll_func(NULL, wxapp_poll_func);
|
||||
@@ -562,3 +557,15 @@ void wxApp::SuspendIdleCallback()
|
||||
wxAddEmissionHook();
|
||||
}
|
||||
}
|
||||
|
||||
#if wxUSE_THREADS
|
||||
void wxMutexGuiEnter()
|
||||
{
|
||||
gdk_threads_enter();
|
||||
}
|
||||
|
||||
void wxMutexGuiLeave()
|
||||
{
|
||||
gdk_threads_leave();
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user