summaryrefslogtreecommitdiff
path: root/vcl/headless
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2016-01-22 14:58:48 +0100
committerStephan Bergmann <sbergman@redhat.com>2016-01-22 14:58:48 +0100
commitdfbc2f37207f11a3bafb2c5ce0dea4fcc137e527 (patch)
treec204cced1beeeebe92a36de9d8c49ba5556f6a31 /vcl/headless
parent9e519ebf8737c8455b8286aa8abaa8a9c683a04d (diff)
Use C++ osl::Mutex, osl::MutexGuard
...and get rid of that curious "defensive programming" mis-handling of a failing osl_acquireMutex Change-Id: I1730c2d8334f0137ee8646ab990d0914426246bb
Diffstat (limited to 'vcl/headless')
-rw-r--r--vcl/headless/svpinst.cxx36
1 files changed, 14 insertions, 22 deletions
diff --git a/vcl/headless/svpinst.cxx b/vcl/headless/svpinst.cxx
index 5e3ffdfb771f..50f070506f55 100644
--- a/vcl/headless/svpinst.cxx
+++ b/vcl/headless/svpinst.cxx
@@ -96,7 +96,6 @@ SvpSalInstance::SvpSalInstance( SalYieldMutex *pMutex ) :
(void)fcntl(m_pTimeoutFDS[1], F_SETFL, flags);
}
}
- m_aEventGuard = osl_createMutex();
if( s_pDefaultInstance == nullptr )
s_pDefaultInstance = this;
}
@@ -109,15 +108,13 @@ SvpSalInstance::~SvpSalInstance()
// close 'wakeup' pipe.
close (m_pTimeoutFDS[0]);
close (m_pTimeoutFDS[1]);
- osl_destroyMutex( m_aEventGuard );
}
void SvpSalInstance::PostEvent(const SalFrame* pFrame, ImplSVEvent* pData, sal_uInt16 nEvent)
{
- if( osl_acquireMutex( m_aEventGuard ) )
{
+ osl::MutexGuard g(m_aEventGuard);
m_aUserEvents.push_back( SalUserEvent( pFrame, pData, nEvent ) );
- osl_releaseMutex( m_aEventGuard );
}
Wakeup();
}
@@ -126,10 +123,9 @@ void SvpSalInstance::PostEvent(const SalFrame* pFrame, ImplSVEvent* pData, sal_u
bool SvpSalInstance::PostedEventsInQueue()
{
bool result = false;
- if( osl_acquireMutex( m_aEventGuard ) )
{
+ osl::MutexGuard g(m_aEventGuard);
result = m_aUserEvents.size() > 0;
- osl_releaseMutex( m_aEventGuard );
}
return result;
}
@@ -139,23 +135,20 @@ void SvpSalInstance::deregisterFrame( SalFrame* pFrame )
{
m_aFrames.remove( pFrame );
- if( osl_acquireMutex( m_aEventGuard ) )
+ osl::MutexGuard g(m_aEventGuard);
+ // cancel outstanding events for this frame
+ if( ! m_aUserEvents.empty() )
{
- // cancel outstanding events for this frame
- if( ! m_aUserEvents.empty() )
+ std::list< SalUserEvent >::iterator it = m_aUserEvents.begin();
+ do
{
- std::list< SalUserEvent >::iterator it = m_aUserEvents.begin();
- do
+ if( it->m_pFrame == pFrame )
{
- if( it->m_pFrame == pFrame )
- {
- it = m_aUserEvents.erase( it );
- }
- else
- ++it;
- } while( it != m_aUserEvents.end() );
- }
- osl_releaseMutex( m_aEventGuard );
+ it = m_aUserEvents.erase( it );
+ }
+ else
+ ++it;
+ } while( it != m_aUserEvents.end() );
}
}
@@ -267,8 +260,8 @@ SalYieldResult SvpSalInstance::DoYield(bool bWait, bool bHandleAllCurrentEvents,
// release yield mutex
std::list< SalUserEvent > aEvents;
sal_uLong nAcquireCount = ReleaseYieldMutex();
- if( osl_acquireMutex( m_aEventGuard ) )
{
+ osl::MutexGuard g(m_aEventGuard);
if( ! m_aUserEvents.empty() )
{
if( bHandleAllCurrentEvents )
@@ -282,7 +275,6 @@ SalYieldResult SvpSalInstance::DoYield(bool bWait, bool bHandleAllCurrentEvents,
m_aUserEvents.pop_front();
}
}
- osl_releaseMutex( m_aEventGuard );
}
// acquire yield mutex again
AcquireYieldMutex( nAcquireCount );