add MutexGuiEnter/Leave to wxAppTraits, integrate native GTK+ GUI locking

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50757 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Paul Cornett
2007-12-17 05:37:00 +00:00
parent 4eccf53dd5
commit d254213eb2
9 changed files with 59 additions and 16 deletions

View File

@@ -225,18 +225,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;
}
}
@@ -356,7 +350,10 @@ 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);
@@ -581,3 +578,15 @@ void wxApp::OnAssertFailure(const wxChar *file,
}
#endif // __WXDEBUG__
#if wxUSE_THREADS
void wxGUIAppTraits::MutexGuiEnter()
{
gdk_threads_enter();
}
void wxGUIAppTraits::MutexGuiLeave()
{
gdk_threads_leave();
}
#endif // wxUSE_THREADS