summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorJan-Marek Glogowski <glogow@fbihome.de>2019-04-07 20:48:24 +0200
committerJan-Marek Glogowski <glogow@fbihome.de>2019-04-09 14:43:07 +0200
commit46b1bb4a9c5ca93b33b4fcd2154062676c5059e4 (patch)
treeeb09b7849d1e7b0b21d5d22bfebc89ad735ccf65 /vcl
parentf01390010338ae627c990026c4ba579ab5eb266f (diff)
Just use the ResettableGuard's functions...
... instead of the nested MutexGuard and clear. Really had to look twice, that the MutexGuard and ResettableGuard use the same Mutex - who came up with this... yup myself. Change-Id: I70326772a9be8352f169a26467529a7c4100a20d Reviewed-on: https://gerrit.libreoffice.org/70385 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/app/salusereventlist.cxx22
1 files changed, 10 insertions, 12 deletions
diff --git a/vcl/source/app/salusereventlist.cxx b/vcl/source/app/salusereventlist.cxx
index b71b5ed2031a..b0741af8ec9e 100644
--- a/vcl/source/app/salusereventlist.cxx
+++ b/vcl/source/app/salusereventlist.cxx
@@ -63,9 +63,7 @@ bool SalUserEventList::DispatchUserEvents( bool bHandleAllCurrentEvents )
oslThreadIdentifier aCurId = osl::Thread::getCurrentIdentifier();
DBG_TESTSOLARMUTEX();
- // cleared after we pop a single event and are save in the 2nd guard.
- // this way we guarantee to process at least one event, if available.
- osl::ResettableMutexGuard aResettableGuard(m_aUserEventsMutex);
+ osl::ResettableMutexGuard aResettableListGuard(m_aUserEventsMutex);
if (!m_aUserEvents.empty())
{
@@ -90,19 +88,19 @@ bool SalUserEventList::DispatchUserEvents( bool bHandleAllCurrentEvents )
SalUserEvent aEvent( nullptr, nullptr, SalEvent::NONE );
do {
- {
- osl::MutexGuard aGuard(m_aUserEventsMutex);
- aResettableGuard.clear();
- if (m_aProcessingUserEvents.empty() || aCurId != m_aProcessingThread)
- break;
- aEvent = m_aProcessingUserEvents.front();
- m_aProcessingUserEvents.pop_front();
- }
+ if (m_aProcessingUserEvents.empty() || aCurId != m_aProcessingThread)
+ break;
+ aEvent = m_aProcessingUserEvents.front();
+ m_aProcessingUserEvents.pop_front();
+
+ // remember to reset the guard before break or continue the loop
+ aResettableListGuard.clear();
if ( !isFrameAlive( aEvent.m_pFrame ) )
{
if ( aEvent.m_nEvent == SalEvent::UserEvent )
delete static_cast< ImplSVEvent* >( aEvent.m_pData );
+ aResettableListGuard.reset();
continue;
}
@@ -126,11 +124,11 @@ bool SalUserEventList::DispatchUserEvents( bool bHandleAllCurrentEvents )
SAL_WARN("vcl", "Uncaught exception during DispatchUserEvents!");
std::abort();
}
+ aResettableListGuard.reset();
if (!bHandleAllCurrentEvents)
break;
}
while( true );
- aResettableGuard.reset();
}
if ( !m_bAllUserEventProcessedSignaled && !HasUserEvents() )