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
This commit is contained in:
Michael Stahl 2013-10-03 14:57:12 +02:00
parent 43d1b80a67
commit da21e9de6a
6 changed files with 9 additions and 32 deletions

View file

@ -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))
{
}

View file

@ -32,11 +32,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
}
//--------------------------------------------------------------------
@ -108,11 +100,6 @@ namespace comphelper
//=====================================================================
//= OAccessibleComponentHelper
//=====================================================================
//---------------------------------------------------------------------
OAccessibleComponentHelper::OAccessibleComponentHelper( )
{
}
//---------------------------------------------------------------------
OAccessibleComponentHelper::OAccessibleComponentHelper( IMutex* _pExternalLock )
:OCommonAccessibleComponent( _pExternalLock )
@ -157,11 +144,6 @@ namespace comphelper
//=====================================================================
//= OAccessibleExtendedComponentHelper
//=====================================================================
//---------------------------------------------------------------------
OAccessibleExtendedComponentHelper::OAccessibleExtendedComponentHelper( )
{
}
//---------------------------------------------------------------------
OAccessibleExtendedComponentHelper::OAccessibleExtendedComponentHelper( IMutex* _pExternalLock )
:OCommonAccessibleComponent( _pExternalLock )

View file

@ -78,19 +78,12 @@ 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 );
}

View file

@ -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 );

View file

@ -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>

View file

@ -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
}