summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2013-10-03 14:57:12 +0200
committerMichael Stahl <mstahl@redhat.com>2013-10-04 14:46:24 +0200
commitda21e9de6a71dcd1926f5bf167049bce0590515e (patch)
tree9c56228d00596f3b7ad73c9f384bde03500e9332
parent43d1b80a6758022c2187e077f50f3606dbe557bf (diff)
require OAccessibleContextHelper to be initialized with SolarMutex
OAccessibleContextHelper methods are locked by OExternalLockGuard which effectively only locks its ExternalMutex (i.e. SolarMutex); so ensure that all sub-classes actually pass in a SolarMutex by removing the default constructor. (since these classes are in comphelper they can only use the SolarMutex indirectly) This uncovers that AccessibleToolPanelDeckTabBarItem and OAccessibleControlContext did not pass in SolarMutex before. Change-Id: Ib9085eeee6225f7c74b158e72f04b1bf62622071
-rw-r--r--accessibility/source/extended/AccessibleToolPanelDeckTabBarItem.cxx6
-rw-r--r--comphelper/source/misc/accessiblecomponenthelper.cxx18
-rw-r--r--comphelper/source/misc/accessiblecontexthelper.cxx9
-rw-r--r--include/comphelper/accessiblecomponenthelper.hxx3
-rw-r--r--include/comphelper/accessiblecontexthelper.hxx2
-rw-r--r--toolkit/source/controls/accessiblecontrolcontext.cxx3
6 files changed, 9 insertions, 32 deletions
diff --git a/accessibility/source/extended/AccessibleToolPanelDeckTabBarItem.cxx b/accessibility/source/extended/AccessibleToolPanelDeckTabBarItem.cxx
index 86c8680effe3..8b7a2fdb0bdf 100644
--- a/accessibility/source/extended/AccessibleToolPanelDeckTabBarItem.cxx
+++ b/accessibility/source/extended/AccessibleToolPanelDeckTabBarItem.cxx
@@ -29,6 +29,7 @@
#include <svtools/toolpanel/paneltabbar.hxx>
#include <unotools/accessiblestatesethelper.hxx>
#include <unotools/accessiblerelationsethelper.hxx>
+#include <toolkit/helper/externallock.hxx>
#include <tools/diagnose_ex.h>
#include <vcl/svapp.hxx>
#include <osl/mutex.hxx>
@@ -263,7 +264,10 @@ namespace accessibility
//------------------------------------------------------------------------------------------------------------------
AccessibleToolPanelDeckTabBarItem::AccessibleToolPanelDeckTabBarItem( const Reference< XAccessible >& i_rAccessibleParent,
::svt::IToolPanelDeck& i_rPanelDeck, ::svt::PanelTabBar& i_rTabBar, const size_t i_nItemPos )
- :m_pImpl( new AccessibleToolPanelDeckTabBarItem_Impl( *this, i_rAccessibleParent, i_rPanelDeck, i_rTabBar, i_nItemPos ) )
+ : ::comphelper::OAccessibleExtendedComponentHelper(
+ new VCLExternalSolarLock)
+ , m_pImpl(new AccessibleToolPanelDeckTabBarItem_Impl(*this,
+ i_rAccessibleParent, i_rPanelDeck, i_rTabBar, i_nItemPos))
{
}
diff --git a/comphelper/source/misc/accessiblecomponenthelper.cxx b/comphelper/source/misc/accessiblecomponenthelper.cxx
index 0a7c08c8c59d..816b24b30f3f 100644
--- a/comphelper/source/misc/accessiblecomponenthelper.cxx
+++ b/comphelper/source/misc/accessiblecomponenthelper.cxx
@@ -33,11 +33,6 @@ namespace comphelper
//= OCommonAccessibleComponent
//=====================================================================
//---------------------------------------------------------------------
- OCommonAccessibleComponent::OCommonAccessibleComponent( )
- {
- }
-
- //---------------------------------------------------------------------
OCommonAccessibleComponent::OCommonAccessibleComponent( IMutex* _pExternalLock )
:OAccessibleContextHelper( _pExternalLock )
{
@@ -46,9 +41,6 @@ namespace comphelper
//---------------------------------------------------------------------
OCommonAccessibleComponent::~OCommonAccessibleComponent( )
{
- forgetExternalLock();
- // this ensures that the lock, which may be already destroyed as part of the derivee,
- // is not used anymore
}
//--------------------------------------------------------------------
@@ -109,11 +101,6 @@ namespace comphelper
//= OAccessibleComponentHelper
//=====================================================================
//---------------------------------------------------------------------
- OAccessibleComponentHelper::OAccessibleComponentHelper( )
- {
- }
-
- //---------------------------------------------------------------------
OAccessibleComponentHelper::OAccessibleComponentHelper( IMutex* _pExternalLock )
:OCommonAccessibleComponent( _pExternalLock )
{
@@ -158,11 +145,6 @@ namespace comphelper
//= OAccessibleExtendedComponentHelper
//=====================================================================
//---------------------------------------------------------------------
- OAccessibleExtendedComponentHelper::OAccessibleExtendedComponentHelper( )
- {
- }
-
- //---------------------------------------------------------------------
OAccessibleExtendedComponentHelper::OAccessibleExtendedComponentHelper( IMutex* _pExternalLock )
:OCommonAccessibleComponent( _pExternalLock )
{
diff --git a/comphelper/source/misc/accessiblecontexthelper.cxx b/comphelper/source/misc/accessiblecontexthelper.cxx
index bb9047d5ca82..3b7836377698 100644
--- a/comphelper/source/misc/accessiblecontexthelper.cxx
+++ b/comphelper/source/misc/accessiblecontexthelper.cxx
@@ -79,18 +79,11 @@ namespace comphelper
//= OAccessibleContextHelper
//=====================================================================
//---------------------------------------------------------------------
- OAccessibleContextHelper::OAccessibleContextHelper( )
- :OAccessibleContextHelper_Base( GetMutex() )
- ,m_pImpl( NULL )
- {
- m_pImpl = new OContextHelper_Impl();
- }
-
- //---------------------------------------------------------------------
OAccessibleContextHelper::OAccessibleContextHelper( IMutex* _pExternalLock )
:OAccessibleContextHelper_Base( GetMutex() )
,m_pImpl( NULL )
{
+ assert(_pExternalLock);
m_pImpl = new OContextHelper_Impl();
m_pImpl->setExternalLock( _pExternalLock );
}
diff --git a/include/comphelper/accessiblecomponenthelper.hxx b/include/comphelper/accessiblecomponenthelper.hxx
index d0eabc27b807..dc31550e8e5b 100644
--- a/include/comphelper/accessiblecomponenthelper.hxx
+++ b/include/comphelper/accessiblecomponenthelper.hxx
@@ -41,7 +41,6 @@ namespace comphelper
class COMPHELPER_DLLPUBLIC OCommonAccessibleComponent : public OAccessibleContextHelper
{
protected:
- OCommonAccessibleComponent();
/// see the respective base class ctor for an extensive comment on this, please
OCommonAccessibleComponent( IMutex* _pExternalLock );
~OCommonAccessibleComponent();
@@ -81,7 +80,6 @@ namespace comphelper
,public OAccessibleComponentHelper_Base
{
protected:
- OAccessibleComponentHelper( );
/// see the respective base class ctor for an extensive comment on this, please
OAccessibleComponentHelper( IMutex* _pExternalLock );
@@ -113,7 +111,6 @@ namespace comphelper
,public OAccessibleExtendedComponentHelper_Base
{
protected:
- OAccessibleExtendedComponentHelper( );
/// see the respective base class ctor for an extensive comment on this, please
OAccessibleExtendedComponentHelper( IMutex* _pExternalLock );
diff --git a/include/comphelper/accessiblecontexthelper.hxx b/include/comphelper/accessiblecontexthelper.hxx
index e6c5c10ab20f..f01c9117c400 100644
--- a/include/comphelper/accessiblecontexthelper.hxx
+++ b/include/comphelper/accessiblecontexthelper.hxx
@@ -90,7 +90,6 @@ namespace comphelper
OContextHelper_Impl* m_pImpl;
protected:
- OAccessibleContextHelper( );
~OAccessibleContextHelper( );
/** ctor
@@ -141,6 +140,7 @@ namespace comphelper
::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
getAccessibleCreator( ) const;
+ private:
/** forgets the reference to the external lock, if present.
<p>This means any further locking will not be guard the external lock anymore, never.</p>
diff --git a/toolkit/source/controls/accessiblecontrolcontext.cxx b/toolkit/source/controls/accessiblecontrolcontext.cxx
index 7be5732e1799..509d2ba78f27 100644
--- a/toolkit/source/controls/accessiblecontrolcontext.cxx
+++ b/toolkit/source/controls/accessiblecontrolcontext.cxx
@@ -25,6 +25,7 @@
#include <com/sun/star/accessibility/AccessibleStateType.hpp>
#include <com/sun/star/accessibility/AccessibleRole.hpp>
#include <toolkit/helper/vclunohelper.hxx>
+#include <toolkit/helper/externallock.hxx>
#include <vcl/window.hxx>
//........................................................................
@@ -44,7 +45,7 @@ namespace toolkit
//====================================================================
//--------------------------------------------------------------------
OAccessibleControlContext::OAccessibleControlContext()
- :OAccessibleControlContext_Base( )
+ : OAccessibleControlContext_Base(new VCLExternalSolarLock)
{
// nothing to do here, we have a late ctor
}