vcl/inc/salusereventlist.hxx        |   14 ++++++++++----
 vcl/source/app/salusereventlist.cxx |   16 ++++++++--------
 2 files changed, 18 insertions(+), 12 deletions(-)

New commits:
commit 90523fd368cf249cb00bd1d881a2a19e1510ca85
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Thu May 5 22:22:51 2022 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Mon May 9 10:18:41 2022 +0200

    osl::Mutex->std::mutex in SalUserEventList
    
    Change-Id: I463f1620e28bf71b8b7ad61a9da074ff6ee7f0f5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133912
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/vcl/inc/salusereventlist.hxx b/vcl/inc/salusereventlist.hxx
index cc5aa88c930c..864802c50a0b 100644
--- a/vcl/inc/salusereventlist.hxx
+++ b/vcl/inc/salusereventlist.hxx
@@ -22,7 +22,7 @@
 
 #include <sal/config.h>
 #include <vcl/dllapi.h>
-#include <osl/mutex.hxx>
+#include <mutex>
 #include <osl/thread.hxx>
 
 #include <list>
@@ -57,7 +57,7 @@ public:
     };
 
 protected:
-    mutable osl::Mutex         m_aUserEventsMutex;
+    mutable std::mutex         m_aUserEventsMutex;
     std::list< SalUserEvent >  m_aUserEvents;
     std::list< SalUserEvent >  m_aProcessingUserEvents;
     bool                       m_bAllUserEventProcessedSignaled;
@@ -68,6 +68,7 @@ protected:
     virtual void TriggerUserEventProcessing() = 0;
     virtual void TriggerAllUserEventsProcessed() {}
 
+    inline bool HasUserEvents_NoLock() const;
 public:
     SalUserEventList();
     virtual ~SalUserEventList() COVERITY_NOEXCEPT_FALSE;
@@ -100,13 +101,18 @@ inline bool SalUserEventList::isFrameAlive( const 
SalFrame* pFrame ) const
 
 inline bool SalUserEventList::HasUserEvents() const
 {
-    osl::MutexGuard aGuard( m_aUserEventsMutex );
+    std::unique_lock aGuard( m_aUserEventsMutex );
+    return HasUserEvents_NoLock();
+}
+
+inline bool SalUserEventList::HasUserEvents_NoLock() const
+{
     return !(m_aUserEvents.empty() && m_aProcessingUserEvents.empty());
 }
 
 inline void SalUserEventList::PostEvent( SalFrame* pFrame, void* pData, 
SalEvent nEvent )
 {
-    osl::MutexGuard aGuard( m_aUserEventsMutex );
+    std::unique_lock aGuard( m_aUserEventsMutex );
     m_aUserEvents.push_back( SalUserEvent( pFrame, pData, nEvent ) );
     m_bAllUserEventProcessedSignaled = false;
     TriggerUserEventProcessing();
diff --git a/vcl/source/app/salusereventlist.cxx 
b/vcl/source/app/salusereventlist.cxx
index 949467ae218c..1e3f78cc43bf 100644
--- a/vcl/source/app/salusereventlist.cxx
+++ b/vcl/source/app/salusereventlist.cxx
@@ -62,7 +62,7 @@ bool SalUserEventList::DispatchUserEvents( bool 
bHandleAllCurrentEvents )
     oslThreadIdentifier aCurId = osl::Thread::getCurrentIdentifier();
 
     DBG_TESTSOLARMUTEX();
-    osl::ResettableMutexGuard aResettableListGuard(m_aUserEventsMutex);
+    std::unique_lock aResettableListGuard(m_aUserEventsMutex);
 
     if (!m_aUserEvents.empty())
     {
@@ -80,7 +80,7 @@ bool SalUserEventList::DispatchUserEvents( bool 
bHandleAllCurrentEvents )
         }
     }
 
-    if (HasUserEvents())
+    if (HasUserEvents_NoLock())
     {
         bWasEvent = true;
         m_aProcessingThread = aCurId;
@@ -93,13 +93,13 @@ bool SalUserEventList::DispatchUserEvents( bool 
bHandleAllCurrentEvents )
             m_aProcessingUserEvents.pop_front();
 
             // remember to reset the guard before break or continue the loop
-            aResettableListGuard.clear();
+            aResettableListGuard.unlock();
 
             if ( !isFrameAlive( aEvent.m_pFrame ) )
             {
                 if ( aEvent.m_nEvent == SalEvent::UserEvent )
                     delete static_cast< ImplSVEvent* >( aEvent.m_pData );
-                aResettableListGuard.reset();
+                aResettableListGuard.lock();
                 continue;
             }
 
@@ -119,14 +119,14 @@ bool SalUserEventList::DispatchUserEvents( bool 
bHandleAllCurrentEvents )
             auto process = [&aEvent, this] () noexcept { ProcessEvent(aEvent); 
};
             process();
 #endif
-            aResettableListGuard.reset();
+            aResettableListGuard.lock();
             if (!bHandleAllCurrentEvents)
                 break;
         }
         while( true );
     }
 
-    if ( !m_bAllUserEventProcessedSignaled && !HasUserEvents() )
+    if ( !m_bAllUserEventProcessedSignaled && !HasUserEvents_NoLock() )
     {
         m_bAllUserEventProcessedSignaled = true;
         TriggerAllUserEventsProcessed();
@@ -139,7 +139,7 @@ void SalUserEventList::RemoveEvent( SalFrame* pFrame, void* 
pData, SalEvent nEve
 {
     SalUserEvent aEvent( pFrame, pData, nEvent );
 
-    osl::MutexGuard aGuard( m_aUserEventsMutex );
+    std::unique_lock aGuard( m_aUserEventsMutex );
     auto it = std::find( m_aUserEvents.begin(), m_aUserEvents.end(), aEvent );
     if ( it != m_aUserEvents.end() )
     {
@@ -154,7 +154,7 @@ void SalUserEventList::RemoveEvent( SalFrame* pFrame, void* 
pData, SalEvent nEve
         }
     }
 
-    if ( !m_bAllUserEventProcessedSignaled && !HasUserEvents() )
+    if ( !m_bAllUserEventProcessedSignaled && !HasUserEvents_NoLock() )
     {
         m_bAllUserEventProcessedSignaled = true;
         TriggerAllUserEventsProcessed();

Reply via email to