diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2023-03-03 08:45:45 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2023-03-03 07:58:05 +0000 |
commit | 4cd6cba3edcba6497220924acc6716ea6027e559 (patch) | |
tree | 2b04831b27c83bfd6a4deba2d61f05e43f7d6d9c /sd | |
parent | 60d9e89f5a18b437016cead0c5fb688d202bc90e (diff) |
Revert "BaseMutex->std::mutex in AccessibleSlideSorterView"
This reverts commit 64c19da4c924c45df037c075ef88d1f01a5abbe9, which
is causing deadlock when loading
https://bugs.documentfoundation.org/attachment.cgi?id=180272
in gtk3
Change-Id: I346fa576cbbb7355e65483ff5aba1f67cf21469a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148156
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sd')
-rw-r--r-- | sd/source/ui/accessibility/AccessibleSlideSorterView.cxx | 21 | ||||
-rw-r--r-- | sd/source/ui/inc/AccessibleSlideSorterView.hxx | 10 |
2 files changed, 17 insertions, 14 deletions
diff --git a/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx b/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx index ae9a45ea73f4..4c197a71279a 100644 --- a/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx +++ b/sd/source/ui/accessibility/AccessibleSlideSorterView.cxx @@ -113,7 +113,8 @@ private: AccessibleSlideSorterView::AccessibleSlideSorterView( ::sd::slidesorter::SlideSorter& rSlideSorter, vcl::Window* pContentWindow) - : mrSlideSorter(rSlideSorter), + : AccessibleSlideSorterViewBase(m_aMutex), + mrSlideSorter(rSlideSorter), mnClientId(0), mpContentWindow(pContentWindow) { @@ -147,7 +148,7 @@ void AccessibleSlideSorterView::FireAccessibleEvent ( } } -void AccessibleSlideSorterView::disposing(std::unique_lock<std::mutex>& /*rGuard*/) +void SAL_CALL AccessibleSlideSorterView::disposing() { if (mnClientId != 0) { @@ -161,7 +162,7 @@ AccessibleSlideSorterObject* AccessibleSlideSorterView::GetAccessibleChildImplem sal_Int32 nIndex) { AccessibleSlideSorterObject* pResult = nullptr; - std::unique_lock aGuard (m_aMutex); + ::osl::MutexGuard aGuard (m_aMutex); if (nIndex>=0 && nIndex<mpImpl->GetVisibleChildCount()) pResult = mpImpl->GetVisibleChild(nIndex); @@ -171,7 +172,7 @@ AccessibleSlideSorterObject* AccessibleSlideSorterView::GetAccessibleChildImplem void AccessibleSlideSorterView::Destroyed() { - std::unique_lock aGuard (m_aMutex); + ::osl::MutexGuard aGuard (m_aMutex); // Send a disposing to all listeners. if (mnClientId != 0) @@ -195,7 +196,7 @@ Reference<XAccessibleContext > SAL_CALL sal_Int64 SAL_CALL AccessibleSlideSorterView::getAccessibleChildCount() { ThrowIfDisposed(); - std::unique_lock aGuard (m_aMutex); + ::osl::MutexGuard aGuard (m_aMutex); return mpImpl->GetVisibleChildCount(); } @@ -203,7 +204,7 @@ Reference<XAccessible > SAL_CALL AccessibleSlideSorterView::getAccessibleChild (sal_Int64 nIndex) { ThrowIfDisposed(); - std::unique_lock aGuard (m_aMutex); + ::osl::MutexGuard aGuard (m_aMutex); if (nIndex<0 || nIndex>=mpImpl->GetVisibleChildCount()) throw lang::IndexOutOfBoundsException(); @@ -322,9 +323,9 @@ void SAL_CALL AccessibleSlideSorterView::addAccessibleEventListener( if (!rxListener.is()) return; - std::unique_lock aGuard(m_aMutex); + const osl::MutexGuard aGuard(m_aMutex); - if (m_bDisposed) + if (rBHelper.bDisposed || rBHelper.bInDispose) { uno::Reference<uno::XInterface> x (static_cast<lang::XComponent *>(this), uno::UNO_QUERY); rxListener->disposing (lang::EventObject (x)); @@ -344,7 +345,7 @@ void SAL_CALL AccessibleSlideSorterView::removeAccessibleEventListener( if (!rxListener.is()) return; - std::unique_lock aGuard(m_aMutex); + const osl::MutexGuard aGuard(m_aMutex); if (mnClientId == 0) return; @@ -622,7 +623,7 @@ uno::Sequence< OUString> SAL_CALL void AccessibleSlideSorterView::ThrowIfDisposed() { - if (m_bDisposed) + if (rBHelper.bDisposed || rBHelper.bInDispose) { SAL_WARN("sd", "Calling disposed object. Throwing exception:"); throw lang::DisposedException ("object has been already disposed", diff --git a/sd/source/ui/inc/AccessibleSlideSorterView.hxx b/sd/source/ui/inc/AccessibleSlideSorterView.hxx index 66bcc8b5ced0..0cbaf62ed586 100644 --- a/sd/source/ui/inc/AccessibleSlideSorterView.hxx +++ b/sd/source/ui/inc/AccessibleSlideSorterView.hxx @@ -19,7 +19,8 @@ #pragma once -#include <comphelper/compbase.hxx> +#include <cppuhelper/basemutex.hxx> +#include <cppuhelper/compbase.hxx> #include <com/sun/star/accessibility/XAccessible.hpp> #include <com/sun/star/accessibility/XAccessibleContext.hpp> #include <com/sun/star/accessibility/XAccessibleComponent.hpp> @@ -37,7 +38,7 @@ namespace accessibility { class AccessibleSlideSorterObject; -typedef ::comphelper::WeakComponentImplHelper< +typedef ::cppu::WeakComponentImplHelper< css::accessibility::XAccessible, css::accessibility::XAccessibleEventBroadcaster, css::accessibility::XAccessibleContext, @@ -51,7 +52,8 @@ typedef ::comphelper::WeakComponentImplHelper< accessible. */ class AccessibleSlideSorterView - : public AccessibleSlideSorterViewBase + : public cppu::BaseMutex, + public AccessibleSlideSorterViewBase { public: AccessibleSlideSorterView( @@ -72,7 +74,7 @@ public: const css::uno::Any& rOldValue, const css::uno::Any& rNewValue); - virtual void disposing(std::unique_lock<std::mutex>& rGuard) override; + virtual void SAL_CALL disposing() override; /** Return the implementation object of the specified child. @param nIndex |