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