[Libreoffice-commits] core.git: vcl/source

Jan-Marek Glogowski (via logerrit) logerrit at kemper.freedesktop.org
Tue Apr 9 12:43:29 UTC 2019


 vcl/source/app/salusereventlist.cxx |   22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

New commits:
commit 46b1bb4a9c5ca93b33b4fcd2154062676c5059e4
Author:     Jan-Marek Glogowski <glogow at fbihome.de>
AuthorDate: Sun Apr 7 20:48:24 2019 +0200
Commit:     Jan-Marek Glogowski <glogow at fbihome.de>
CommitDate: Tue Apr 9 14:43:07 2019 +0200

    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 at fbihome.de>

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() )


More information about the Libreoffice-commits mailing list