sw/inc/accmap.hxx                |   13 +++++++------
 sw/source/core/access/accmap.cxx |   17 ++++++++++++-----
 2 files changed, 19 insertions(+), 11 deletions(-)

New commits:
commit 2442fc19400e0e82b0375d3772a2e0b34a511600
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Thu Feb 16 19:39:17 2023 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Fri Feb 17 12:59:41 2023 +0000

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

diff --git a/sw/inc/accmap.hxx b/sw/inc/accmap.hxx
index 0090d7837876..df5f697841e2 100644
--- a/sw/inc/accmap.hxx
+++ b/sw/inc/accmap.hxx
@@ -20,17 +20,17 @@
 #define INCLUDED_SW_INC_ACCMAP_HXX
 
 #include <cppuhelper/weakref.hxx>
-#include <rtl/ref.hxx>
 #include <osl/mutex.hxx>
+#include <o3tl/typed_flags_set.hxx>
+#include <o3tl/sorted_vector.hxx>
+#include <rtl/ref.hxx>
 #include <svx/IAccessibleViewForwarder.hxx>
 #include <svx/IAccessibleParent.hxx>
-
 #include <svx/AccessibleControlShape.hxx>
-#include <o3tl/typed_flags_set.hxx>
 
-#include <vector>
 #include <memory>
-#include <o3tl/sorted_vector.hxx>
+#include <mutex>
+#include <vector>
 
 class SwAccessibleParagraph;
 class SwViewShell;
@@ -90,7 +90,7 @@ class SwAccessibleMap final : public 
::accessibility::IAccessibleViewForwarder,
                 , public std::enable_shared_from_this<SwAccessibleMap>
 {
     mutable ::osl::Mutex maMutex;
-    ::osl::Mutex maEventMutex;
+    std::mutex maEventMutex;
     std::unique_ptr<SwAccessibleContextMap_Impl> mpFrameMap;
     std::unique_ptr<SwAccessibleShapeMap_Impl> mpShapeMap;
     SwShapeList_Impl mvShapes;
@@ -115,6 +115,7 @@ class SwAccessibleMap final : public 
::accessibility::IAccessibleViewForwarder,
 
     void FireEvent( const SwAccessibleEvent_Impl& rEvent );
 
+    void AppendEvent( std::unique_lock<std::mutex>& rGuard, const 
SwAccessibleEvent_Impl& rEvent );
     void AppendEvent( const SwAccessibleEvent_Impl& rEvent );
 
     void InvalidateCursorPosition( const 
css::uno::Reference<css::accessibility::XAccessible>& rAcc );
diff --git a/sw/source/core/access/accmap.cxx b/sw/source/core/access/accmap.cxx
index 46c0dbaf0714..a22a0219bd81 100644
--- a/sw/source/core/access/accmap.cxx
+++ b/sw/source/core/access/accmap.cxx
@@ -977,7 +977,14 @@ void SwAccessibleMap::FireEvent( const 
SwAccessibleEvent_Impl& rEvent )
 
 void SwAccessibleMap::AppendEvent( const SwAccessibleEvent_Impl& rEvent )
 {
-    osl::MutexGuard aGuard( maEventMutex );
+    std::unique_lock aGuard(maEventMutex);
+    AppendEvent(aGuard, rEvent);
+}
+
+void SwAccessibleMap::AppendEvent( std::unique_lock<std::mutex>& rGuard, const 
SwAccessibleEvent_Impl& rEvent )
+{
+    assert(rGuard.mutex() == &maEventMutex);
+    (void)rGuard;
 
     if( !mpEvents )
         mpEvents.reset(new SwAccessibleEventList_Impl);
@@ -1702,7 +1709,7 @@ SwAccessibleMap::~SwAccessibleMap()
     mpPreview.reset();
 
     {
-        osl::MutexGuard aGuard( maEventMutex );
+        std::unique_lock aGuard( maEventMutex );
         assert(!mpEvents);
         assert(!mpEventMap);
         mpEventMap.reset();
@@ -2247,7 +2254,7 @@ void SwAccessibleMap::A11yDispose( const SwFrame *pFrame,
 
     // remove events stored for the frame
     {
-        osl::MutexGuard aGuard( maEventMutex );
+        std::unique_lock aGuard( maEventMutex );
         if( mpEvents )
         {
             SwAccessibleEventMap_Impl::iterator aIter =
@@ -2256,7 +2263,7 @@ void SwAccessibleMap::A11yDispose( const SwFrame *pFrame,
             {
                 SwAccessibleEvent_Impl aEvent(
                         SwAccessibleEvent_Impl::DISPOSE, aFrameOrObj );
-                AppendEvent( aEvent );
+                AppendEvent( aGuard, aEvent );
             }
         }
     }
@@ -2998,7 +3005,7 @@ bool SwAccessibleMap::IsPageSelected( const SwPageFrame 
*pPageFrame ) const
 void SwAccessibleMap::FireEvents()
 {
     {
-        osl::MutexGuard aGuard( maEventMutex );
+        std::unique_lock aGuard( maEventMutex );
         if( mpEvents )
         {
             if (mpEvents->IsFiring())

Reply via email to