summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorChris Sherlock <chris.sherlock79@gmail.com>2017-03-18 18:49:10 +1100
committerChris Sherlock <chris.sherlock79@gmail.com>2017-03-18 10:57:27 +0000
commit5198b4b8c7a7086753e499900b227e16f3d65340 (patch)
treefc69508e6e979679281b630bcebba6a611f8b07b /vcl
parent396138719206d5033faaeaf09b88437cbb3480e7 (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.hxx12
-rw-r--r--vcl/unx/gtk/gtkdata.cxx11
-rw-r--r--vcl/unx/gtk3/gtk3gtkdata.cxx11
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;