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:
Paul Cornett
2007-01-18 18:13:34 +00:00
parent 186453cc7c
commit 165d3652ff
2 changed files with 21 additions and 6 deletions

View File

@@ -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