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:
@@ -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
|
||||
|
Reference in New Issue
Block a user