diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2021-12-24 11:51:29 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2021-12-25 16:52:14 +0100 |
commit | 35267be7ce33c5203a76e8023382c287b2e1f180 (patch) | |
tree | 111bcc00eec3abc101e3d6df263ba8f43c4c2acd /svtools | |
parent | eb400749a3c193ff53617aca3cd2baab9a5d0e05 (diff) |
use comphelper::WeakComponentImplHelper in ValueSetAcc
and remove unnecessary use of SolarMutex, the fields
are already protected by mutex and the locked region
doesn't call into vcl.
Change-Id: Ia010674b14fafe2bfac27956af71fb557a4df212
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127408
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'svtools')
-rw-r--r-- | svtools/source/control/valueacc.cxx | 29 | ||||
-rw-r--r-- | svtools/source/control/valueimp.hxx | 11 |
2 files changed, 17 insertions, 23 deletions
diff --git a/svtools/source/control/valueacc.cxx b/svtools/source/control/valueacc.cxx index d8f97826499f..23d3dcde9bc6 100644 --- a/svtools/source/control/valueacc.cxx +++ b/svtools/source/control/valueacc.cxx @@ -418,7 +418,6 @@ void ValueItemAcc::FireAccessibleEvent( short nEventId, const uno::Any& rOldValu } ValueSetAcc::ValueSetAcc( ValueSet* pParent ) : - ValueSetAccComponentBase (m_aMutex), mpParent( pParent ), mbIsFocused(false) { @@ -661,7 +660,7 @@ lang::Locale SAL_CALL ValueSetAcc::getLocale() void SAL_CALL ValueSetAcc::addAccessibleEventListener( const uno::Reference< accessibility::XAccessibleEventListener >& rxListener ) { ThrowIfDisposed(); - ::osl::MutexGuard aGuard (m_aMutex); + std::unique_lock aGuard (m_aMutex); if( !rxListener.is() ) return; @@ -685,7 +684,7 @@ void SAL_CALL ValueSetAcc::addAccessibleEventListener( const uno::Reference< acc void SAL_CALL ValueSetAcc::removeAccessibleEventListener( const uno::Reference< accessibility::XAccessibleEventListener >& rxListener ) { ThrowIfDisposed(); - ::osl::MutexGuard aGuard (m_aMutex); + std::unique_lock aGuard (m_aMutex); if( rxListener.is() ) { @@ -911,21 +910,19 @@ sal_Int64 SAL_CALL ValueSetAcc::getSomething( const uno::Sequence< sal_Int8 >& r } -void SAL_CALL ValueSetAcc::disposing() +void ValueSetAcc::disposing(std::unique_lock<std::mutex>& rGuard) { - ::std::vector<uno::Reference<accessibility::XAccessibleEventListener> > aListenerListCopy; + // Make a copy of the list and clear the original. + ::std::vector<uno::Reference<accessibility::XAccessibleEventListener> > aListenerListCopy = std::move(mxEventListeners); - { - // Make a copy of the list and clear the original. - const SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard (m_aMutex); - aListenerListCopy.swap(mxEventListeners); - - // Reset the pointer to the parent. It has to be the one who has - // disposed us because he is dying. - mpParent = nullptr; - } + // Reset the pointer to the parent. It has to be the one who has + // disposed us because he is dying. + mpParent = nullptr; + + if (aListenerListCopy.empty()) + return; + rGuard.unlock(); // Inform all listeners that this objects is disposing. lang::EventObject aEvent (static_cast<accessibility::XAccessible*>(this)); for (auto const& listenerCopy : aListenerListCopy) @@ -974,7 +971,7 @@ ValueSetItem* ValueSetAcc::getItem (sal_uInt16 nIndex) const void ValueSetAcc::ThrowIfDisposed() { - if (rBHelper.bDisposed || rBHelper.bInDispose) + if (m_bDisposed) { SAL_WARN("svx", "Calling disposed object. Throwing exception:"); throw lang::DisposedException ( diff --git a/svtools/source/control/valueimp.hxx b/svtools/source/control/valueimp.hxx index ca25ddbc12cf..4f9e9ec9c945 100644 --- a/svtools/source/control/valueimp.hxx +++ b/svtools/source/control/valueimp.hxx @@ -23,8 +23,7 @@ #include <tools/color.hxx> #include <vcl/image.hxx> #include <cppuhelper/implbase.hxx> -#include <cppuhelper/compbase.hxx> -#include <cppuhelper/basemutex.hxx> +#include <comphelper/compbase.hxx> #include <com/sun/star/lang/XUnoTunnel.hpp> #include <com/sun/star/accessibility/XAccessible.hpp> #include <com/sun/star/accessibility/XAccessibleContext.hpp> @@ -68,7 +67,7 @@ struct ValueSetItem GetAccessible( bool bIsTransientChildrenDisabled ); }; -typedef ::cppu::WeakComponentImplHelper< +typedef comphelper::WeakComponentImplHelper< css::accessibility::XAccessible, css::accessibility::XAccessibleEventBroadcaster, css::accessibility::XAccessibleContext, @@ -77,9 +76,7 @@ typedef ::cppu::WeakComponentImplHelper< css::lang::XUnoTunnel > ValueSetAccComponentBase; -class ValueSetAcc : - public ::cppu::BaseMutex, - public ValueSetAccComponentBase +class ValueSetAcc final : public ValueSetAccComponentBase { public: @@ -156,7 +153,7 @@ private: /** Tell all listeners that the object is dying. This callback is usually called from the WeakComponentImplHelper class. */ - virtual void SAL_CALL disposing() override; + virtual void disposing(std::unique_lock<std::mutex>&) override; /** Return the number of items. This takes the None-Item into account. */ |