diff options
author | Chris Sherlock <chris.sherlock79@gmail.com> | 2017-03-18 18:49:10 +1100 |
---|---|---|
committer | Chris Sherlock <chris.sherlock79@gmail.com> | 2017-03-18 10:57:27 +0000 |
commit | 5198b4b8c7a7086753e499900b227e16f3d65340 (patch) | |
tree | fc69508e6e979679281b630bcebba6a611f8b07b /vcl | |
parent | 396138719206d5033faaeaf09b88437cbb3480e7 (diff) |
vcl: make GtkData use osl::Condition instead of oslCondition
Condition is deprecated already, but there is no need for the
GtkData class to use the low-level C-API, when in fact there is a C++
fascade that calls on this via the C++ abstraction, osl::Condition.
This will make it much easier to switch to using std::condition_variable
in the future.
Change-Id: Iddd2cad0e1137c0b458ebe25b506d463847a6dc0
Reviewed-on: https://gerrit.libreoffice.org/35389
Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com>
Tested-by: Chris Sherlock <chris.sherlock79@gmail.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/inc/unx/gtk/gtkdata.hxx | 12 | ||||
-rw-r--r-- | vcl/unx/gtk/gtkdata.cxx | 11 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkdata.cxx | 11 |
3 files changed, 16 insertions, 18 deletions
diff --git a/vcl/inc/unx/gtk/gtkdata.hxx b/vcl/inc/unx/gtk/gtkdata.hxx index ffb0fb700718..69ff7f479478 100644 --- a/vcl/inc/unx/gtk/gtkdata.hxx +++ b/vcl/inc/unx/gtk/gtkdata.hxx @@ -29,7 +29,7 @@ #include <unx/saldisp.hxx> #include <unx/gtk/gtksys.hxx> #include <vcl/ptrstyle.hxx> -#include <osl/conditn.h> +#include <osl/conditn.hxx> #include "saltimer.hxx" #include <o3tl/enumarray.hxx> @@ -94,11 +94,11 @@ public: class GtkData : public SalGenericData { - GSource* m_pUserEvent; - osl::Mutex m_aDispatchMutex; - oslCondition m_aDispatchCondition; - css::uno::Any m_aException; - bool blockIdleTimeout; + GSource* m_pUserEvent; + osl::Mutex m_aDispatchMutex; + osl::Condition m_aDispatchCondition; + css::uno::Any m_aException; + bool blockIdleTimeout; public: GtkData( SalInstance *pInstance ); diff --git a/vcl/unx/gtk/gtkdata.cxx b/vcl/unx/gtk/gtkdata.cxx index a0ba64dc4074..036b83accdbe 100644 --- a/vcl/unx/gtk/gtkdata.cxx +++ b/vcl/unx/gtk/gtkdata.cxx @@ -405,10 +405,10 @@ int GtkSalDisplay::CaptureMouse( SalFrame* pSFrame ) GtkData::GtkData( SalInstance *pInstance ) : SalGenericData( SAL_DATA_GTK, pInstance ) , m_aDispatchMutex() + , m_aDispatchCondition() , blockIdleTimeout( false ) { m_pUserEvent = nullptr; - m_aDispatchCondition = osl_createCondition(); } static XIOErrorHandler aOrigXIOErrorHandler = nullptr; @@ -432,7 +432,7 @@ GtkData::~GtkData() // sanity check: at this point nobody should be yielding, but wake them // up anyway before the condition they're waiting on gets destroyed. - osl_setCondition( m_aDispatchCondition ); + m_aDispatchCondition.set(); osl::MutexGuard g( m_aDispatchMutex ); if (m_pUserEvent) @@ -441,7 +441,6 @@ GtkData::~GtkData() g_source_unref (m_pUserEvent); m_pUserEvent = nullptr; } - osl_destroyCondition( m_aDispatchCondition ); XSetIOErrorHandler(aOrigXIOErrorHandler); } @@ -491,9 +490,9 @@ SalYieldResult GtkData::Yield( bool bWait, bool bHandleAllCurrentEvents ) * workaround: timeout of 1 second a emergency exit */ // we are the dispatch thread - osl_resetCondition( m_aDispatchCondition ); + m_aDispatchCondition.reset(); TimeValue aValue = { 1, 0 }; - osl_waitCondition( m_aDispatchCondition, &aValue ); + m_aDispatchCondition.wait( &aValue ); } } @@ -501,7 +500,7 @@ SalYieldResult GtkData::Yield( bool bWait, bool bHandleAllCurrentEvents ) { m_aDispatchMutex.release(); if( bWasEvent ) - osl_setCondition( m_aDispatchCondition ); // trigger non dispatch thread yields + m_aDispatchCondition.set(); // trigger non dispatch thread yields } blockIdleTimeout = false; diff --git a/vcl/unx/gtk3/gtk3gtkdata.cxx b/vcl/unx/gtk3/gtk3gtkdata.cxx index 03e70ec83e66..7e6ea43c6b61 100644 --- a/vcl/unx/gtk3/gtk3gtkdata.cxx +++ b/vcl/unx/gtk3/gtk3gtkdata.cxx @@ -368,10 +368,10 @@ int GtkSalDisplay::CaptureMouse( SalFrame* pSFrame ) GtkData::GtkData( SalInstance *pInstance ) : SalGenericData( SAL_DATA_GTK3, pInstance ) , m_aDispatchMutex() + , m_aDispatchCondition() , blockIdleTimeout( false ) { m_pUserEvent = nullptr; - m_aDispatchCondition = osl_createCondition(); } #if defined(GDK_WINDOWING_X11) @@ -397,7 +397,7 @@ GtkData::~GtkData() // sanity check: at this point nobody should be yielding, but wake them // up anyway before the condition they're waiting on gets destroyed. - osl_setCondition( m_aDispatchCondition ); + m_aDispatchCondition.set(); osl::MutexGuard g( m_aDispatchMutex ); if (m_pUserEvent) @@ -406,7 +406,6 @@ GtkData::~GtkData() g_source_unref (m_pUserEvent); m_pUserEvent = nullptr; } - osl_destroyCondition( m_aDispatchCondition ); #if defined(GDK_WINDOWING_X11) if (GDK_IS_X11_DISPLAY(gdk_display_get_default())) XSetIOErrorHandler(aOrigXIOErrorHandler); @@ -461,9 +460,9 @@ SalYieldResult GtkData::Yield( bool bWait, bool bHandleAllCurrentEvents ) * workaround: timeout of 1 second a emergency exit */ // we are the dispatch thread - osl_resetCondition( m_aDispatchCondition ); + m_aDispatchCondition.reset(); TimeValue aValue = { 1, 0 }; - osl_waitCondition( m_aDispatchCondition, &aValue ); + m_aDispatchCondition.wait(&aValue); } } @@ -471,7 +470,7 @@ SalYieldResult GtkData::Yield( bool bWait, bool bHandleAllCurrentEvents ) { m_aDispatchMutex.release(); if( bWasEvent ) - osl_setCondition( m_aDispatchCondition ); // trigger non dispatch thread yields + m_aDispatchCondition.set(); // trigger non dispatch thread yields } blockIdleTimeout = false; |