vcl/unx/gtk/a11y/atkwindow.cxx | 2 ++ vcl/unx/gtk/app/gtkdata.cxx | 1 + vcl/unx/gtk/app/gtkinst.cxx | 30 ++++++++++++++++++++++-------- vcl/unx/gtk/window/gtkframe.cxx | 2 ++ 4 files changed, 27 insertions(+), 8 deletions(-)
New commits: commit 8cce65b1460582b9275ea0f982a61a9f621868b2 Author: Michael Meeks <michael.me...@suse.com> Date: Fri Oct 21 15:47:23 2011 +0100 gtk3: caveats on using g_main_prepare for older glibs; needs re-work diff --git a/vcl/unx/gtk/app/gtkinst.cxx b/vcl/unx/gtk/app/gtkinst.cxx index b5b70c0..67b480d 100644 --- a/vcl/unx/gtk/app/gtkinst.cxx +++ b/vcl/unx/gtk/app/gtkinst.cxx @@ -585,17 +585,31 @@ void GtkInstance::Yield( bool bWait, bool bHandleAllCurrentEvents ) bool GtkInstance::IsTimerExpired() { gint nPriority; + bool bRet = false; GMainContext *pCtx = g_main_context_default(); - // sets time_is_fresh to FALSE - if( !g_main_context_prepare( pCtx, &nPriority ) ) - return false; - for( std::vector<GtkSalTimer *>::iterator it = m_aTimers.begin(); - it != m_aTimers.end(); ++it ) + + if( !g_main_context_acquire( pCtx ) ) + return false; // some other thread is waiting still ... + + // FIXME: we need to re-work this to do our own timeouts to avoid + // warnings from older glib's about poll_waiting etc. + + // sets GMainContext's time_is_fresh to FALSE + if( g_main_context_prepare( pCtx, &nPriority ) ) { - if( (*it)->Expired() ) - return true; + for( std::vector<GtkSalTimer *>::iterator it = m_aTimers.begin(); + it != m_aTimers.end(); ++it ) + { + if( (*it)->Expired() ) + { + bRet = true; + break; + } + } } - return false; + g_main_context_release( pCtx ); + + return bRet; } bool GtkInstance::AnyInput( sal_uInt16 nType ) commit 23145073c79c1313b20ad21a4bc1e0e39550e666 Author: Michael Meeks <michael.me...@suse.com> Date: Fri Oct 21 15:27:17 2011 +0100 gtk3: add some missing SolarMutexGuards (thanks to mst for noticing) diff --git a/vcl/unx/gtk/a11y/atkwindow.cxx b/vcl/unx/gtk/a11y/atkwindow.cxx index 2cedf59..6970f0d 100644 --- a/vcl/unx/gtk/a11y/atkwindow.cxx +++ b/vcl/unx/gtk/a11y/atkwindow.cxx @@ -30,6 +30,7 @@ #include "precompiled_vcl.hxx" #include <unx/gtk/gtkframe.hxx> +#include <vcl/svapp.hxx> #include <vcl/window.hxx> #include "vcl/popupmenuwindow.hxx" @@ -131,6 +132,7 @@ init_from_window( AtkObject *accessible, Window *pWindow ) static gint ooo_window_wrapper_clear_focus(gpointer) { + SolarMutexGuard aGuard; atk_focus_tracker_notify( NULL ); return FALSE; } diff --git a/vcl/unx/gtk/app/gtkdata.cxx b/vcl/unx/gtk/app/gtkdata.cxx index ad417f1..b50f859 100644 --- a/vcl/unx/gtk/app/gtkdata.cxx +++ b/vcl/unx/gtk/app/gtkdata.cxx @@ -880,6 +880,7 @@ gboolean GtkData::userEventFn( gpointer data ) extern "C" { static gboolean call_userEventFn( void *data ) { + SolarMutexGuard aGuard; return GtkData::userEventFn( data ); } } diff --git a/vcl/unx/gtk/window/gtkframe.cxx b/vcl/unx/gtk/window/gtkframe.cxx index 3ab7840..87d1f49 100644 --- a/vcl/unx/gtk/window/gtkframe.cxx +++ b/vcl/unx/gtk/window/gtkframe.cxx @@ -3219,6 +3219,8 @@ gboolean GtkSalFrame::signalFocus( GtkWidget*, GdkEventFocus* pEvent, gpointer f extern "C" { gboolean implDelayedFullScreenHdl (void *pWindow) { + SolarMutexGuard aGuard; + /* #i110881# workaround a gtk issue (see https://bugzilla.redhat.com/show_bug.cgi?id=623191#c8) gtk_window_fullscreen can fail due to a race condition, _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits