accessibility/inc/accessibility/extended/AccessibleGridControl.hxx | 5 - accessibility/inc/accessibility/extended/AccessibleGridControlBase.hxx | 39 --------- accessibility/source/extended/AccessibleGridControl.cxx | 31 ++++--- accessibility/source/extended/AccessibleGridControlBase.cxx | 41 ++++++---- accessibility/source/extended/AccessibleGridControlHeader.cxx | 11 +- accessibility/source/extended/AccessibleGridControlHeaderCell.cxx | 5 - accessibility/source/extended/AccessibleGridControlTable.cxx | 38 ++++----- accessibility/source/extended/AccessibleGridControlTableBase.cxx | 22 +++-- accessibility/source/extended/AccessibleGridControlTableCell.cxx | 38 ++++----- include/svtools/accessibletable.hxx | 2 svtools/source/table/tablecontrol_impl.cxx | 2 11 files changed, 107 insertions(+), 127 deletions(-)
New commits: commit 158b4df6033d4fdadadebeaa6099465fdef2e368 Author: Michael Stahl <mst...@redhat.com> Date: Mon Dec 16 16:16:15 2013 +0100 svtools: rename IAccessibleTableControl::dispose() ... to not confuse it with XComponent::dispose(). Change-Id: I056fdf77f9116d1c22f8ca9313a0ea313fb1c4aa diff --git a/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx b/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx index 3752fcc..8996a64 100644 --- a/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx +++ b/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx @@ -228,7 +228,7 @@ protected: { return this; } - void dispose(); + void DisposeAccessImpl() SAL_OVERRIDE; virtual sal_Bool isAlive() const { return isContextAlive(); diff --git a/accessibility/source/extended/AccessibleGridControl.cxx b/accessibility/source/extended/AccessibleGridControl.cxx index c56f6bd..5ee23f6 100644 --- a/accessibility/source/extended/AccessibleGridControl.cxx +++ b/accessibility/source/extended/AccessibleGridControl.cxx @@ -421,7 +421,7 @@ AccessibleGridControlAccess::~AccessibleGridControlAccess() } // ----------------------------------------------------------------------------- -void AccessibleGridControlAccess::dispose() +void AccessibleGridControlAccess::DisposeAccessImpl() { SolarMutexGuard g; diff --git a/include/svtools/accessibletable.hxx b/include/svtools/accessibletable.hxx index 285ab84..8b89684 100644 --- a/include/svtools/accessibletable.hxx +++ b/include/svtools/accessibletable.hxx @@ -139,7 +139,7 @@ public: /** disposes the accessible implementation, so that it becomes defunc */ - virtual void dispose() = 0; + virtual void DisposeAccessImpl() = 0; /** checks whether the accessible implementation, and its context, are still alive @return <TRUE/>, if the object is not disposed or disposing. diff --git a/svtools/source/table/tablecontrol_impl.cxx b/svtools/source/table/tablecontrol_impl.cxx index e27dbac..f4238c9 100644 --- a/svtools/source/table/tablecontrol_impl.cxx +++ b/svtools/source/table/tablecontrol_impl.cxx @@ -2727,7 +2727,7 @@ namespace svt { namespace table void TableControl_Impl::disposeAccessible() { if ( m_pAccessibleTable ) - m_pAccessibleTable->dispose(); + m_pAccessibleTable->DisposeAccessImpl(); m_pAccessibleTable = NULL; } commit 449e0c9c7378ba32039bd5934c26011d682a8a91 Author: Michael Stahl <mst...@redhat.com> Date: Mon Dec 16 16:09:19 2013 +0100 accessibility: don't crash if the TableControl is dead AccessibleGridControlAccess: clear the m_pTable member in dispose() so it is no longer accessed later. Change-Id: I490c84ce1bee55c9c69eb29b81ddfbe808301797 diff --git a/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx b/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx index c4ed353..3752fcc 100644 --- a/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx +++ b/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx @@ -195,7 +195,7 @@ class AccessibleGridControlAccess :public AccessibleGridControlAccess_Base private: ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > m_xParent; - ::svt::table::IAccessibleTable& m_rTable; + ::svt::table::IAccessibleTable * m_pTable; ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > m_xContext; diff --git a/accessibility/source/extended/AccessibleGridControl.cxx b/accessibility/source/extended/AccessibleGridControl.cxx index 8ce5800..c56f6bd 100644 --- a/accessibility/source/extended/AccessibleGridControl.cxx +++ b/accessibility/source/extended/AccessibleGridControl.cxx @@ -407,10 +407,11 @@ void AccessibleGridControl::commitTableEvent(sal_Int16 _nEventId,const Any& _rNe // ============================================================================ // ----------------------------------------------------------------------------- -AccessibleGridControlAccess::AccessibleGridControlAccess( const Reference< XAccessible >& _rxParent, IAccessibleTable& _rTable ) - :m_xParent( _rxParent ) - ,m_rTable( _rTable ) - ,m_pContext( NULL ) +AccessibleGridControlAccess::AccessibleGridControlAccess( + const Reference< XAccessible >& rxParent, IAccessibleTable& rTable ) + : m_xParent( rxParent ) + , m_pTable( & rTable ) + , m_pContext( 0 ) { } @@ -424,6 +425,7 @@ void AccessibleGridControlAccess::dispose() { SolarMutexGuard g; + m_pTable = 0; m_pContext = NULL; ::comphelper::disposeComponent( m_xContext ); } @@ -441,8 +443,9 @@ Reference< XAccessibleContext > SAL_CALL AccessibleGridControlAccess::getAccessi if ( m_pContext && !m_pContext->isAlive() ) m_xContext = m_pContext = NULL; - if ( !m_xContext.is() ) - m_xContext = m_pContext = new AccessibleGridControl( m_xParent, this, m_rTable ); + if (!m_xContext.is() && m_pTable) + m_xContext = m_pContext = + new AccessibleGridControl(m_xParent, this, *m_pTable); return m_xContext; } commit 9eccfd86eea1603bdca9f31f3984dcf464406bbc Author: Michael Stahl <mst...@redhat.com> Date: Mon Dec 16 15:35:59 2013 +0100 accessibility: Mutex cleanup in AccessibleGridControl* classes For unknown reasons this uses both SolarMutex and a OBaseMutex::m_aMutex to lock some but not all methods, which seems odd. - remove a third mutex AccessibleGridControl::m_aMutex that appears unused - lock OBaseMutex::m_aMutex in AccessibleGridControlBase::isAlive() which accesses rBHelper members, which should be sufficient - lock SolarMutex in all UNO methods - remove misc weird stuff like TC_SolarMethodGuard Change-Id: I8321757fb4a5043a05c23f2dc9801f5d8c8d911e diff --git a/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx b/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx index e92e495..c4ed353 100644 --- a/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx +++ b/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx @@ -193,7 +193,6 @@ class AccessibleGridControlAccess :public AccessibleGridControlAccess_Base ,public ::svt::table::IAccessibleTableControl { private: - ::osl::Mutex m_aMutex; ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > m_xParent; ::svt::table::IAccessibleTable& m_rTable; diff --git a/accessibility/inc/accessibility/extended/AccessibleGridControlBase.hxx b/accessibility/inc/accessibility/extended/AccessibleGridControlBase.hxx index 52fdce8..fb130c3 100644 --- a/accessibility/inc/accessibility/extended/AccessibleGridControlBase.hxx +++ b/accessibility/inc/accessibility/extended/AccessibleGridControlBase.hxx @@ -286,11 +286,6 @@ protected: void ensureIsAlive() const throw ( ::com::sun::star::lang::DisposedException ); - /** @return The ::osl::Mutex member provided by the class OBaseMutex. */ - inline ::osl::Mutex& getOslMutex(); - /** @return Pointer to the global ::osl::Mutex. */ - static inline ::osl::Mutex* getOslGlobalMutex(); - /** Changes the name of the object (flat assignment, no notify). @attention This method requires a locked mutex. */ inline void implSetName( const OUString& rName ); @@ -312,13 +307,6 @@ protected: ::comphelper::AccessibleEventNotifier::TClientId getClientId() const { return m_aClientId; } void setClientId(::comphelper::AccessibleEventNotifier::TClientId _aNewClientId) { m_aClientId = _aNewClientId; } -public: - // public versions of internal helper methods, with access control - struct TC_AccessControl { friend class TC_SolarMethodGuard; private: TC_AccessControl() { } }; - - inline ::osl::Mutex& getMutex( const TC_AccessControl& ) { return getOslMutex(); } - inline void ensureIsAlive( const TC_AccessControl& ) { ensureIsAlive(); } - protected: // members ---------------------------------------------------------------- @@ -387,23 +375,6 @@ private: GridControlAccessibleElement& operator=( const GridControlAccessibleElement& ); // never implemented }; -// ============================================================================ -// a helper class for protecting methods which need to lock the solar mutex in addition to the own mutex - -typedef ::osl::MutexGuard OslMutexGuard; - -class TC_SolarMethodGuard : public SolarMutexGuard, public OslMutexGuard -{ -public: - inline TC_SolarMethodGuard( AccessibleGridControlBase& _rOwner, bool _bEnsureAlive = true ) - : SolarMutexGuard(), - OslMutexGuard( _rOwner.getMutex( AccessibleGridControlBase::TC_AccessControl() ) ) - { - if ( _bEnsureAlive ) - _rOwner.ensureIsAlive( AccessibleGridControlBase::TC_AccessControl() ); - } -}; - // inlines -------------------------------------------------------------------- inline ::svt::table::AccessibleTableControlObjType AccessibleGridControlBase::getType() const @@ -411,16 +382,6 @@ inline ::svt::table::AccessibleTableControlObjType AccessibleGridControlBase::ge return m_eObjType; } -inline ::osl::Mutex& AccessibleGridControlBase::getOslMutex() -{ - return m_aMutex; -} - -inline ::osl::Mutex* AccessibleGridControlBase::getOslGlobalMutex() -{ - return ::osl::Mutex::getGlobalMutex(); -} - inline void AccessibleGridControlBase::implSetName( const OUString& rName ) { diff --git a/accessibility/source/extended/AccessibleGridControl.cxx b/accessibility/source/extended/AccessibleGridControl.cxx index df7b8a0..8ce5800 100644 --- a/accessibility/source/extended/AccessibleGridControl.cxx +++ b/accessibility/source/extended/AccessibleGridControl.cxx @@ -87,7 +87,7 @@ AccessibleGridControl::~AccessibleGridControl() void SAL_CALL AccessibleGridControl::disposing() { - ::osl::MutexGuard aGuard( getOslMutex() ); + SolarMutexGuard g; m_pImpl->m_pTable = NULL; m_pImpl->m_pColumnHeaderBar = NULL; @@ -122,7 +122,6 @@ sal_Int32 SAL_CALL AccessibleGridControl::getAccessibleChildCount() throw ( uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); ensureIsAlive(); return m_aTable.GetAccessibleControlCount(); } @@ -133,7 +132,6 @@ AccessibleGridControl::getAccessibleChild( sal_Int32 nChildIndex ) throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); if (nChildIndex<0 || nChildIndex>=getAccessibleChildCount()) throw IndexOutOfBoundsException(); @@ -177,6 +175,8 @@ AccessibleGridControl::getAccessibleChild( sal_Int32 nChildIndex ) sal_Int16 SAL_CALL AccessibleGridControl::getAccessibleRole() throw ( uno::RuntimeException ) { + SolarMutexGuard g; + ensureIsAlive(); return AccessibleRole::PANEL; } @@ -189,7 +189,6 @@ AccessibleGridControl::getAccessibleAtPoint( const awt::Point& rPoint ) throw ( uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); ensureIsAlive(); Reference< XAccessible > xChild; @@ -220,7 +219,6 @@ void SAL_CALL AccessibleGridControl::grabFocus() throw ( uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); ensureIsAlive(); m_aTable.GrabFocus(); } @@ -229,6 +227,8 @@ void SAL_CALL AccessibleGridControl::grabFocus() Any SAL_CALL AccessibleGridControl::getAccessibleKeyBinding() throw ( uno::RuntimeException ) { + SolarMutexGuard g; + ensureIsAlive(); return Any(); } @@ -422,7 +422,7 @@ AccessibleGridControlAccess::~AccessibleGridControlAccess() // ----------------------------------------------------------------------------- void AccessibleGridControlAccess::dispose() { - ::osl::MutexGuard aGuard( m_aMutex ); + SolarMutexGuard g; m_pContext = NULL; ::comphelper::disposeComponent( m_xContext ); @@ -431,7 +431,7 @@ void AccessibleGridControlAccess::dispose() // ----------------------------------------------------------------------------- Reference< XAccessibleContext > SAL_CALL AccessibleGridControlAccess::getAccessibleContext() throw ( RuntimeException ) { - ::osl::MutexGuard aGuard( m_aMutex ); + SolarMutexGuard g; OSL_ENSURE( ( m_pContext && m_xContext.is() ) || ( !m_pContext && !m_xContext.is() ), "accessibility/extended/AccessibleGridControlAccess::getAccessibleContext: inconsistency!" ); diff --git a/accessibility/source/extended/AccessibleGridControlBase.cxx b/accessibility/source/extended/AccessibleGridControlBase.cxx index 553ccbb..8df5cf6 100644 --- a/accessibility/source/extended/AccessibleGridControlBase.cxx +++ b/accessibility/source/extended/AccessibleGridControlBase.cxx @@ -72,7 +72,7 @@ AccessibleGridControlBase::~AccessibleGridControlBase() void SAL_CALL AccessibleGridControlBase::disposing() { - ::osl::MutexGuard aGuard( getOslMutex() ); + SolarMutexGuard g; if ( getClientId( ) ) { @@ -90,7 +90,8 @@ void SAL_CALL AccessibleGridControlBase::disposing() Reference< XAccessible > SAL_CALL AccessibleGridControlBase::getAccessibleParent() throw ( uno::RuntimeException ) { - ::osl::MutexGuard aGuard( getOslMutex() ); + SolarMutexGuard g; + ensureIsAlive(); return m_xParent; } @@ -98,7 +99,8 @@ Reference< XAccessible > SAL_CALL AccessibleGridControlBase::getAccessibleParent sal_Int32 SAL_CALL AccessibleGridControlBase::getAccessibleIndexInParent() throw ( uno::RuntimeException ) { - ::osl::MutexGuard aGuard( getOslMutex() ); + SolarMutexGuard g; + ensureIsAlive(); // -1 for child not found/no parent (according to specification) @@ -133,7 +135,8 @@ sal_Int32 SAL_CALL AccessibleGridControlBase::getAccessibleIndexInParent() OUString SAL_CALL AccessibleGridControlBase::getAccessibleDescription() throw ( uno::RuntimeException ) { - ::osl::MutexGuard aGuard( getOslMutex() ); + SolarMutexGuard g; + ensureIsAlive(); return m_aDescription; } @@ -141,7 +144,8 @@ OUString SAL_CALL AccessibleGridControlBase::getAccessibleDescription() OUString SAL_CALL AccessibleGridControlBase::getAccessibleName() throw ( uno::RuntimeException ) { - ::osl::MutexGuard aGuard( getOslMutex() ); + SolarMutexGuard g; + ensureIsAlive(); return m_aName; } @@ -150,6 +154,8 @@ Reference< XAccessibleRelationSet > SAL_CALL AccessibleGridControlBase::getAccessibleRelationSet() throw ( uno::RuntimeException ) { + SolarMutexGuard g; + ensureIsAlive(); // GridControl does not have relations. return new utl::AccessibleRelationSetHelper; @@ -160,7 +166,7 @@ AccessibleGridControlBase::getAccessibleStateSet() throw ( uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + // don't check whether alive -> StateSet may contain DEFUNC return implCreateStateSetHelper(); } @@ -168,7 +174,8 @@ AccessibleGridControlBase::getAccessibleStateSet() lang::Locale SAL_CALL AccessibleGridControlBase::getLocale() throw ( IllegalAccessibleComponentStateException, uno::RuntimeException ) { - ::osl::MutexGuard aGuard( getOslMutex() ); + SolarMutexGuard g; + ensureIsAlive(); if( m_xParent.is() ) { @@ -216,7 +223,7 @@ sal_Bool SAL_CALL AccessibleGridControlBase::isShowing() throw ( uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); return implIsShowing(); } @@ -244,7 +251,8 @@ void SAL_CALL AccessibleGridControlBase::addAccessibleEventListener( { if ( _rxListener.is() ) { - ::osl::MutexGuard aGuard( getOslMutex() ); + SolarMutexGuard g; + if ( !getClientId( ) ) setClientId( AccessibleEventNotifier::registerClient( ) ); @@ -258,7 +266,8 @@ void SAL_CALL AccessibleGridControlBase::removeAccessibleEventListener( { if( _rxListener.is() && getClientId( ) ) { - ::osl::MutexGuard aGuard( getOslMutex() ); + SolarMutexGuard g; + sal_Int32 nListenerCount = AccessibleEventNotifier::removeEventListener( getClientId( ), _rxListener ); if ( !nListenerCount ) { @@ -339,6 +348,7 @@ sal_Bool AccessibleGridControlBase::implIsShowing() sal_Bool AccessibleGridControlBase::isAlive() const { + ::osl::MutexGuard g(m_aMutex); // guards rBHelper members return !rBHelper.bDisposed && !rBHelper.bInDispose && &m_aTable; } @@ -353,7 +363,6 @@ Rectangle AccessibleGridControlBase::getBoundingBox() throw ( lang::DisposedException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); ensureIsAlive(); Rectangle aRect = implGetBoundingBox(); if ( 0 == aRect.Left() && 0 == aRect.Top() && 0 == aRect.Right() && 0 == aRect.Bottom() ) @@ -367,7 +376,6 @@ Rectangle AccessibleGridControlBase::getBoundingBoxOnScreen() throw ( lang::DisposedException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); ensureIsAlive(); Rectangle aRect = implGetBoundingBoxOnScreen(); if ( 0 == aRect.Left() && 0 == aRect.Top() && 0 == aRect.Right() && 0 == aRect.Bottom() ) @@ -380,7 +388,8 @@ Rectangle AccessibleGridControlBase::getBoundingBoxOnScreen() void AccessibleGridControlBase::commitEvent( sal_Int16 _nEventId, const Any& _rNewValue, const Any& _rOldValue ) { - ::osl::ClearableMutexGuard aGuard( getOslMutex() ); + SolarMutexGuard g; + if ( !getClientId( ) ) // if we don't have a client id for the notifier, then we don't have listeners, then // we don't need to notify anything @@ -441,7 +450,7 @@ Reference<XAccessible > SAL_CALL AccessibleGridControlBase::getAccessibleAtPoint sal_Int32 SAL_CALL AccessibleGridControlBase::getForeground( ) throw (::com::sun::star::uno::RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); sal_Int32 nColor = 0; @@ -466,7 +475,7 @@ sal_Int32 SAL_CALL AccessibleGridControlBase::getForeground( ) throw (::com::su sal_Int32 SAL_CALL AccessibleGridControlBase::getBackground( ) throw (::com::sun::star::uno::RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); sal_Int32 nColor = 0; Window* pInst = m_aTable.GetWindowInstance(); @@ -498,6 +507,8 @@ IMPLEMENT_FORWARD_XTYPEPROVIDER2( GridControlAccessibleElement, AccessibleGridCo Reference< XAccessibleContext > SAL_CALL GridControlAccessibleElement::getAccessibleContext() throw ( uno::RuntimeException ) { + SolarMutexGuard g; + ensureIsAlive(); return this; } diff --git a/accessibility/source/extended/AccessibleGridControlHeader.cxx b/accessibility/source/extended/AccessibleGridControlHeader.cxx index 0bc1649..24f3116 100644 --- a/accessibility/source/extended/AccessibleGridControlHeader.cxx +++ b/accessibility/source/extended/AccessibleGridControlHeader.cxx @@ -64,7 +64,6 @@ AccessibleGridControlHeader::getAccessibleChild( sal_Int32 nChildIndex ) throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); if (nChildIndex<0 || nChildIndex>=getAccessibleChildCount()) throw IndexOutOfBoundsException(); @@ -100,7 +99,7 @@ AccessibleGridControlHeader::getAccessibleAtPoint( const awt::Point& rPoint ) throw ( uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); sal_Int32 nRow = 0; @@ -132,7 +131,7 @@ OUString SAL_CALL AccessibleGridControlHeader::getAccessibleRowDescription( sal_ throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); ensureIsValidRow( nRow ); return OUString(); // no headers in headers @@ -142,7 +141,7 @@ OUString SAL_CALL AccessibleGridControlHeader::getAccessibleColumnDescription( s throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); ensureIsValidColumn( nColumn ); return OUString(); // no headers in headers @@ -151,6 +150,8 @@ OUString SAL_CALL AccessibleGridControlHeader::getAccessibleColumnDescription( s Reference< XAccessibleTable > SAL_CALL AccessibleGridControlHeader::getAccessibleRowHeaders() throw ( uno::RuntimeException ) { + SolarMutexGuard g; + ensureIsAlive(); return NULL; // no headers in headers } @@ -158,6 +159,8 @@ Reference< XAccessibleTable > SAL_CALL AccessibleGridControlHeader::getAccessibl Reference< XAccessibleTable > SAL_CALL AccessibleGridControlHeader::getAccessibleColumnHeaders() throw ( uno::RuntimeException ) { + SolarMutexGuard g; + ensureIsAlive(); return NULL; // no headers in headers } diff --git a/accessibility/source/extended/AccessibleGridControlHeaderCell.cxx b/accessibility/source/extended/AccessibleGridControlHeaderCell.cxx index 548c21b..f716a8a 100644 --- a/accessibility/source/extended/AccessibleGridControlHeaderCell.cxx +++ b/accessibility/source/extended/AccessibleGridControlHeaderCell.cxx @@ -45,7 +45,6 @@ AccessibleGridControlHeaderCell::AccessibleGridControlHeaderCell(sal_Int32 _nCol */ ::utl::AccessibleStateSetHelper* AccessibleGridControlHeaderCell::implCreateStateSetHelper() { - ::osl::MutexGuard aGuard( getOslMutex() ); ::utl::AccessibleStateSetHelper* pStateSetHelper = new ::utl::AccessibleStateSetHelper; @@ -55,7 +54,6 @@ AccessibleGridControlHeaderCell::AccessibleGridControlHeaderCell(sal_Int32 _nCol if( implIsShowing() ) pStateSetHelper->AddState( AccessibleStateType::SHOWING ); - SolarMutexGuard aSolarGuard; pStateSetHelper->AddState( AccessibleStateType::VISIBLE ); pStateSetHelper->AddState( AccessibleStateType::FOCUSABLE ); pStateSetHelper->AddState( AccessibleStateType::TRANSIENT ); @@ -163,7 +161,8 @@ Rectangle AccessibleGridControlHeaderCell::implGetBoundingBoxOnScreen() sal_Int32 SAL_CALL AccessibleGridControlHeaderCell::getAccessibleIndexInParent() throw ( RuntimeException ) { - ::osl::MutexGuard aGuard( getOslMutex() ); + SolarMutexGuard g; + ensureIsAlive(); sal_Int32 nIndex = m_nColumnRowId; return nIndex; diff --git a/accessibility/source/extended/AccessibleGridControlTable.cxx b/accessibility/source/extended/AccessibleGridControlTable.cxx index 3b08ead..5b31740 100644 --- a/accessibility/source/extended/AccessibleGridControlTable.cxx +++ b/accessibility/source/extended/AccessibleGridControlTable.cxx @@ -58,7 +58,7 @@ AccessibleGridControlTable::getAccessibleChild( sal_Int32 nChildIndex ) throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); ensureIsValidIndex( nChildIndex ); sal_Int32 nCount = getAccessibleChildCount(); @@ -95,7 +95,7 @@ AccessibleGridControlTable::getAccessibleAtPoint( const awt::Point& rPoint ) throw ( uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); Reference< XAccessible > xChild; @@ -110,7 +110,7 @@ void SAL_CALL AccessibleGridControlTable::grabFocus() throw ( uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); m_aTable.GrabFocus(); } @@ -128,7 +128,7 @@ OUString SAL_CALL AccessibleGridControlTable::getAccessibleRowDescription( sal_I throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); ensureIsValidRow( nRow ); return m_aTable.GetRowDescription( nRow ); @@ -138,7 +138,7 @@ OUString SAL_CALL AccessibleGridControlTable::getAccessibleColumnDescription( sa throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); ensureIsValidColumn( nColumn ); return m_aTable.GetColumnDescription( (sal_uInt16)nColumn ); @@ -147,7 +147,8 @@ OUString SAL_CALL AccessibleGridControlTable::getAccessibleColumnDescription( sa Reference< XAccessibleTable > SAL_CALL AccessibleGridControlTable::getAccessibleRowHeaders() throw ( uno::RuntimeException ) { - ::osl::MutexGuard aGuard( getOslMutex() ); + SolarMutexGuard g; + ensureIsAlive(); if(m_aTable.HasColHeader()) return implGetHeaderBar( 1 ); @@ -158,7 +159,8 @@ Reference< XAccessibleTable > SAL_CALL AccessibleGridControlTable::getAccessible Reference< XAccessibleTable > SAL_CALL AccessibleGridControlTable::getAccessibleColumnHeaders() throw ( uno::RuntimeException ) { - ::osl::MutexGuard aGuard( getOslMutex() ); + SolarMutexGuard g; + ensureIsAlive(); return implGetHeaderBar( 0 ); } @@ -167,7 +169,7 @@ Sequence< sal_Int32 > SAL_CALL AccessibleGridControlTable::getSelectedAccessible throw ( uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); Sequence< sal_Int32 > aSelSeq; implGetSelectedRows( aSelSeq ); @@ -186,7 +188,7 @@ sal_Bool SAL_CALL AccessibleGridControlTable::isAccessibleRowSelected( sal_Int32 throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); ensureIsValidRow( nRow ); sal_Bool bSelected = sal_False; @@ -215,7 +217,7 @@ Reference< XAccessible > SAL_CALL AccessibleGridControlTable::getAccessibleCellA throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); ensureIsValidAddress( nRow, nColumn ); sal_Int32 nCount = getAccessibleChildCount(); @@ -239,7 +241,7 @@ sal_Bool SAL_CALL AccessibleGridControlTable::isAccessibleSelected( throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); ensureIsValidAddress( nRow, nColumn ); (void) nColumn; @@ -250,7 +252,7 @@ void SAL_CALL AccessibleGridControlTable::selectAccessibleChild( sal_Int32 nChil throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); ensureIsValidIndex( nChildIndex ); sal_Int32 nColumns = m_aTable.GetColumnCount(); @@ -261,7 +263,7 @@ sal_Bool SAL_CALL AccessibleGridControlTable::isAccessibleChildSelected( sal_Int throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); ensureIsValidIndex( nChildIndex ); sal_Int32 nColumns = m_aTable.GetColumnCount(); @@ -272,7 +274,7 @@ void SAL_CALL AccessibleGridControlTable::clearAccessibleSelection() throw ( uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); m_aTable.SelectAllRows( false ); } @@ -280,7 +282,7 @@ void SAL_CALL AccessibleGridControlTable::selectAllAccessibleChildren() throw ( uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); Sequence< sal_Int32 > selectedRows = getSelectedAccessibleRows(); for(int i=0;i<m_aTable.GetRowCount();i++) @@ -290,7 +292,7 @@ sal_Int32 SAL_CALL AccessibleGridControlTable::getSelectedAccessibleChildCount() throw ( uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); Sequence< sal_Int32 > selectedRows = getSelectedAccessibleRows(); sal_Int32 nColumns = m_aTable.GetColumnCount(); @@ -301,7 +303,7 @@ AccessibleGridControlTable::getSelectedAccessibleChild( sal_Int32 nSelectedChild throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); if(isAccessibleChildSelected(nSelectedChildIndex)) return getAccessibleChild(nSelectedChildIndex); @@ -314,7 +316,7 @@ void SAL_CALL AccessibleGridControlTable::deselectAccessibleChild( throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); (void)nSelectedChildIndex; } diff --git a/accessibility/source/extended/AccessibleGridControlTableBase.cxx b/accessibility/source/extended/AccessibleGridControlTableBase.cxx index f6d7570..737a59e 100644 --- a/accessibility/source/extended/AccessibleGridControlTableBase.cxx +++ b/accessibility/source/extended/AccessibleGridControlTableBase.cxx @@ -58,7 +58,7 @@ sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleChildCount() throw ( uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); sal_Int32 nChildren = 0; if(m_eObjType == TCTYPE_ROWHEADERBAR) @@ -73,6 +73,8 @@ sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleChildCount() sal_Int16 SAL_CALL AccessibleGridControlTableBase::getAccessibleRole() throw ( uno::RuntimeException ) { + SolarMutexGuard g; + ensureIsAlive(); return AccessibleRole::TABLE; } @@ -83,7 +85,7 @@ sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleRowCount() throw ( uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); return m_aTable.GetRowCount(); } @@ -92,7 +94,7 @@ sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleColumnCount() throw ( uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); return m_aTable.GetColumnCount(); } @@ -102,7 +104,7 @@ sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleRowExtentAt( throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); ensureIsValidAddress( nRow, nColumn ); return 1; // merged cells not supported @@ -113,7 +115,7 @@ sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleColumnExtentAt( throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); ensureIsValidAddress( nRow, nColumn ); return 1; // merged cells not supported @@ -122,6 +124,8 @@ sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleColumnExtentAt( Reference< XAccessible > SAL_CALL AccessibleGridControlTableBase::getAccessibleCaption() throw ( uno::RuntimeException ) { + SolarMutexGuard g; + ensureIsAlive(); return NULL; // not supported } @@ -129,6 +133,8 @@ Reference< XAccessible > SAL_CALL AccessibleGridControlTableBase::getAccessibleC Reference< XAccessible > SAL_CALL AccessibleGridControlTableBase::getAccessibleSummary() throw ( uno::RuntimeException ) { + SolarMutexGuard g; + ensureIsAlive(); return NULL; // not supported } @@ -138,7 +144,7 @@ sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleIndex( throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); ensureIsValidAddress( nRow, nColumn ); return implGetChildIndex( nRow, nColumn ); @@ -148,7 +154,7 @@ sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleRow( sal_Int32 n throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); ensureIsValidIndex( nChildIndex ); return implGetRow( nChildIndex ); @@ -158,7 +164,7 @@ sal_Int32 SAL_CALL AccessibleGridControlTableBase::getAccessibleColumn( sal_Int3 throw ( lang::IndexOutOfBoundsException, uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); ensureIsValidIndex( nChildIndex ); return implGetColumn( nChildIndex ); diff --git a/accessibility/source/extended/AccessibleGridControlTableCell.cxx b/accessibility/source/extended/AccessibleGridControlTableCell.cxx index 1f70088..84fdb1a 100644 --- a/accessibility/source/extended/AccessibleGridControlTableCell.cxx +++ b/accessibility/source/extended/AccessibleGridControlTableCell.cxx @@ -80,7 +80,7 @@ namespace accessibility void SAL_CALL AccessibleGridControlCell::grabFocus() throw ( RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + m_aTable.GoToCell( m_nColPos, m_nRowPos ); } //// ----------------------------------------------------------------------------- @@ -140,7 +140,6 @@ namespace accessibility ::com::sun::star::awt::Rectangle SAL_CALL AccessibleGridControlTableCell::getCharacterBounds( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); ensureIsAlive(); if ( !implIsValidIndex( nIndex, implGetText().getLength() ) ) @@ -156,7 +155,7 @@ namespace accessibility sal_Int32 SAL_CALL AccessibleGridControlTableCell::getIndexAtPoint( const ::com::sun::star::awt::Point& _aPoint ) throw (RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); return m_aTable.GetFieldIndexAtPoint( getRowPos(), getColumnPos(), VCLPoint( _aPoint ) ); @@ -195,9 +194,6 @@ namespace accessibility */ ::utl::AccessibleStateSetHelper* AccessibleGridControlTableCell::implCreateStateSetHelper() { - SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); - ::utl::AccessibleStateSetHelper* pStateSetHelper = new ::utl::AccessibleStateSetHelper; if( isAlive() ) @@ -220,6 +216,8 @@ namespace accessibility /** @return The XAccessibleContext interface of this object. */ Reference< XAccessibleContext > SAL_CALL AccessibleGridControlTableCell::getAccessibleContext() throw ( RuntimeException ) { + SolarMutexGuard g; + ensureIsAlive(); return this; } @@ -230,7 +228,7 @@ namespace accessibility throw ( ::com::sun::star::uno::RuntimeException ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + ensureIsAlive(); return ( getRowPos() * m_aTable.GetColumnCount() ) + getColumnPos(); @@ -243,7 +241,6 @@ namespace accessibility sal_Bool SAL_CALL AccessibleGridControlTableCell::setCaretPosition ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); if ( !implIsValidRange( nIndex, nIndex, implGetText().getLength() ) ) throw IndexOutOfBoundsException(); @@ -253,13 +250,12 @@ namespace accessibility sal_Unicode SAL_CALL AccessibleGridControlTableCell::getCharacter( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + return OCommonAccessibleText::getCharacter( nIndex ); } ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL AccessibleGridControlTableCell::getCharacterAttributes( sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< OUString >& ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); OUString sText( implGetText() ); @@ -271,32 +267,32 @@ namespace accessibility sal_Int32 SAL_CALL AccessibleGridControlTableCell::getCharacterCount( ) throw (::com::sun::star::uno::RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + return OCommonAccessibleText::getCharacterCount( ); } OUString SAL_CALL AccessibleGridControlTableCell::getSelectedText( ) throw (::com::sun::star::uno::RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + return OCommonAccessibleText::getSelectedText( ); } sal_Int32 SAL_CALL AccessibleGridControlTableCell::getSelectionStart( ) throw (::com::sun::star::uno::RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + return OCommonAccessibleText::getSelectionStart( ); } sal_Int32 SAL_CALL AccessibleGridControlTableCell::getSelectionEnd( ) throw (::com::sun::star::uno::RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + return OCommonAccessibleText::getSelectionEnd( ); } sal_Bool SAL_CALL AccessibleGridControlTableCell::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + if ( !implIsValidRange( nStartIndex, nEndIndex, implGetText().getLength() ) ) throw IndexOutOfBoundsException(); @@ -305,37 +301,37 @@ namespace accessibility OUString SAL_CALL AccessibleGridControlTableCell::getText( ) throw (::com::sun::star::uno::RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + return OCommonAccessibleText::getText( ); } OUString SAL_CALL AccessibleGridControlTableCell::getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + return OCommonAccessibleText::getTextRange( nStartIndex, nEndIndex ); } ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleGridControlTableCell::getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + return OCommonAccessibleText::getTextAtIndex( nIndex ,aTextType); } ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleGridControlTableCell::getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + return OCommonAccessibleText::getTextBeforeIndex( nIndex ,aTextType); } ::com::sun::star::accessibility::TextSegment SAL_CALL AccessibleGridControlTableCell::getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + return OCommonAccessibleText::getTextBehindIndex( nIndex ,aTextType); } sal_Bool SAL_CALL AccessibleGridControlTableCell::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( getOslMutex() ); + OUString sText = implGetText(); checkIndex_Impl( nStartIndex, sText ); checkIndex_Impl( nEndIndex, sText ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits