comphelper/source/property/propmultiplex.cxx | 25 -- connectivity/source/drivers/mork/MResultSet.cxx | 25 -- connectivity/source/drivers/mork/MResultSet.hxx | 3 dbaccess/source/ui/browser/sbagrid.cxx | 37 +-- dbaccess/source/ui/inc/sbagrid.hxx | 3 embeddedobj/source/commonembedding/embedobj.cxx | 34 +-- embeddedobj/source/commonembedding/inplaceobj.cxx | 2 embeddedobj/source/commonembedding/miscobj.cxx | 40 +-- embeddedobj/source/commonembedding/persistence.cxx | 53 ++--- embeddedobj/source/commonembedding/specialobject.cxx | 2 embeddedobj/source/commonembedding/visobj.cxx | 12 - embeddedobj/source/general/docholder.cxx | 19 - embeddedobj/source/inc/commonembobj.hxx | 3 embeddedobj/source/inc/docholder.hxx | 3 extensions/source/bibliography/loadlisteneradapter.cxx | 25 -- extensions/source/bibliography/loadlisteneradapter.hxx | 8 extensions/source/propctrlr/submissionhandler.cxx | 13 - extensions/source/propctrlr/submissionhandler.hxx | 5 forms/source/component/DatabaseForm.cxx | 20 - forms/source/component/DatabaseForm.hxx | 3 fpicker/source/office/fpsmartcontent.cxx | 20 - fpicker/source/office/fpsmartcontent.hxx | 4 include/comphelper/propmultiplex.hxx | 5 include/sfx2/ipclient.hxx | 3 include/svtools/ruler.hxx | 3 include/svx/svdotext.hxx | 3 sc/source/ui/app/seltrans.cxx | 42 +--- sc/source/ui/inc/cellsh.hxx | 10 sc/source/ui/inc/seltrans.hxx | 9 sc/source/ui/view/cellsh.cxx | 15 - sc/source/ui/view/cellsh1.cxx | 5 sfx2/source/appl/appdata.cxx | 2 sfx2/source/appl/appinit.cxx | 7 sfx2/source/inc/appdata.hxx | 2 sfx2/source/view/ipclient.cxx | 174 ++++++++--------- stoc/source/corereflection/base.hxx | 11 - stoc/source/corereflection/crbase.cxx | 11 - svtools/source/control/ruler.cxx | 14 - svtools/source/misc/transfer.cxx | 19 - svtools/source/uno/unoimap.cxx | 65 ++---- svx/source/svdraw/svdotxln.cxx | 2 41 files changed, 330 insertions(+), 431 deletions(-)
New commits: commit 8777c3482dd1baf6ab0d79adbb524c32d1e0e349 Author: Noel Grandin <[email protected]> Date: Fri Jan 20 15:09:18 2017 +0200 use rtl::Reference in SvUnoImageMap instead of manual acquire/release Change-Id: Ia17a1cca542ef0008fe32f2dbfcfce1ecd3161a2 diff --git a/svtools/source/uno/unoimap.cxx b/svtools/source/uno/unoimap.cxx index 691df2d..c8cf5248 100644 --- a/svtools/source/uno/unoimap.cxx +++ b/svtools/source/uno/unoimap.cxx @@ -32,6 +32,7 @@ #include <cppuhelper/weakagg.hxx> #include <cppuhelper/implbase.hxx> #include <cppuhelper/supportsservice.hxx> +#include <algorithm> #include <list> #include <osl/mutex.hxx> #include <vcl/svapp.hxx> @@ -513,7 +514,6 @@ class SvUnoImageMap : public WeakImplHelper< XIndexContainer, XServiceInfo, XUno public: explicit SvUnoImageMap( const SvEventDescription* pSupportedMacroItems ); SvUnoImageMap( const ImageMap& rMap, const SvEventDescription* pSupportedMacroItems ); - virtual ~SvUnoImageMap() override; bool fillImageMap( ImageMap& rMap ) const; /// @throws IllegalArgumentException @@ -544,7 +544,7 @@ public: private: OUString maName; - std::list< SvUnoImageMapObject* > maObjectList; + std::list< rtl::Reference<SvUnoImageMapObject> > maObjectList; }; UNO3_GETIMPLEMENTATION_IMPL( SvUnoImageMap ); @@ -561,19 +561,8 @@ SvUnoImageMap::SvUnoImageMap( const ImageMap& rMap, const SvEventDescription* pS for( std::size_t nPos = 0; nPos < nCount; nPos++ ) { IMapObject* pMapObject = rMap.GetIMapObject( nPos ); - SvUnoImageMapObject* pUnoObj = new SvUnoImageMapObject( *pMapObject, pSupportedMacroItems ); - pUnoObj->acquire(); - maObjectList.push_back( pUnoObj ); - } -} - -SvUnoImageMap::~SvUnoImageMap() -{ - std::list< SvUnoImageMapObject* >::iterator aIter = maObjectList.begin(); - const std::list< SvUnoImageMapObject* >::iterator aEnd = maObjectList.end(); - while( aIter != aEnd ) - { - (*aIter++)->release(); + rtl::Reference<SvUnoImageMapObject> xUnoObj = new SvUnoImageMapObject( *pMapObject, pSupportedMacroItems ); + maObjectList.push_back( xUnoObj ); } } @@ -591,24 +580,20 @@ SvUnoImageMapObject* SvUnoImageMap::getObject( const Any& aElement ) } // XIndexContainer -void SAL_CALL SvUnoImageMap::insertByIndex( sal_Int32 Index, const Any& Element ) +void SAL_CALL SvUnoImageMap::insertByIndex( sal_Int32 nIndex, const Any& Element ) throw( IllegalArgumentException, IndexOutOfBoundsException, WrappedTargetException, RuntimeException, std::exception ) { SvUnoImageMapObject* pObject = getObject( Element ); const sal_Int32 nCount = maObjectList.size(); - if( nullptr == pObject || Index > nCount ) + if( nullptr == pObject || nIndex > nCount ) throw IndexOutOfBoundsException(); - pObject->acquire(); - - if( Index == nCount ) + if( nIndex == nCount ) maObjectList.push_back( pObject ); else { - std::list< SvUnoImageMapObject* >::iterator aIter = maObjectList.begin(); - for( sal_Int32 n = 0; n < Index; n++ ) - ++aIter; - + auto aIter = maObjectList.begin(); + std::advance(aIter, nIndex); maObjectList.insert( aIter, pObject ); } } @@ -621,34 +606,27 @@ void SAL_CALL SvUnoImageMap::removeByIndex( sal_Int32 nIndex ) throw(IndexOutOfB if( nCount - 1 == nIndex ) { - maObjectList.back()->release(); maObjectList.pop_back(); } else { - std::list< SvUnoImageMapObject* >::iterator aIter = maObjectList.begin(); + auto aIter = maObjectList.begin(); std::advance(aIter, nIndex); - - (*aIter)->release(); maObjectList.erase( aIter ); } } // XIndexReplace -void SAL_CALL SvUnoImageMap::replaceByIndex( sal_Int32 Index, const Any& Element ) throw(IllegalArgumentException, IndexOutOfBoundsException, WrappedTargetException, RuntimeException, std::exception) +void SAL_CALL SvUnoImageMap::replaceByIndex( sal_Int32 nIndex, const Any& Element ) throw(IllegalArgumentException, IndexOutOfBoundsException, WrappedTargetException, RuntimeException, std::exception) { SvUnoImageMapObject* pObject = getObject( Element ); const sal_Int32 nCount = maObjectList.size(); - if( nullptr == pObject || Index >= nCount ) + if( nullptr == pObject || nIndex >= nCount ) throw IndexOutOfBoundsException(); - std::list< SvUnoImageMapObject* >::iterator aIter = maObjectList.begin(); - for( sal_Int32 n = 0; n < Index; n++ ) - ++aIter; - - (*aIter)->release(); + auto aIter = maObjectList.begin(); + std::advance(aIter, nIndex); *aIter = pObject; - pObject->acquire(); } // XIndexAccess @@ -657,17 +635,16 @@ sal_Int32 SAL_CALL SvUnoImageMap::getCount( ) throw(RuntimeException, std::exce return maObjectList.size(); } -Any SAL_CALL SvUnoImageMap::getByIndex( sal_Int32 Index ) throw(IndexOutOfBoundsException, WrappedTargetException, RuntimeException, std::exception) +Any SAL_CALL SvUnoImageMap::getByIndex( sal_Int32 nIndex ) throw(IndexOutOfBoundsException, WrappedTargetException, RuntimeException, std::exception) { const sal_Int32 nCount = maObjectList.size(); - if( Index >= nCount ) + if( nIndex >= nCount ) throw IndexOutOfBoundsException(); - std::list< SvUnoImageMapObject* >::iterator aIter = maObjectList.begin(); - for( sal_Int32 n = 0; n < Index; n++ ) - ++aIter; + auto aIter = maObjectList.begin(); + std::advance(aIter, nIndex); - Reference< XPropertySet > xObj( *aIter ); + Reference< XPropertySet > xObj( aIter->get() ); return makeAny( xObj ); } @@ -708,8 +685,8 @@ bool SvUnoImageMap::fillImageMap( ImageMap& rMap ) const rMap.SetName( maName ); - std::list< SvUnoImageMapObject* >::const_iterator aIter = maObjectList.begin(); - const std::list< SvUnoImageMapObject* >::const_iterator aEnd = maObjectList.end(); + auto aIter = maObjectList.begin(); + auto const aEnd = maObjectList.end(); while( aIter != aEnd ) { IMapObject* pNewMapObject = (*aIter)->createIMapObject(); commit 71d9f5df23ad3d7de80f86162217c599f84e5dae Author: Noel Grandin <[email protected]> Date: Fri Jan 20 15:04:15 2017 +0200 use rtl::Reference in TransferableDataHelper_Impl instead of manual acquire/release Change-Id: I0d7d71a76c84f61f87399d7b7d93be0e50ccae16 diff --git a/svtools/source/misc/transfer.cxx b/svtools/source/misc/transfer.cxx index 08195e6..5e417a7 100644 --- a/svtools/source/misc/transfer.cxx +++ b/svtools/source/misc/transfer.cxx @@ -1104,10 +1104,9 @@ void TransferableClipboardNotifier::dispose() struct TransferableDataHelper_Impl { ::osl::Mutex maMutex; - TransferableClipboardNotifier* mpClipboardListener; + rtl::Reference<TransferableClipboardNotifier> mxClipboardListener; TransferableDataHelper_Impl() - :mpClipboardListener( nullptr ) { } }; @@ -1152,7 +1151,7 @@ TransferableDataHelper& TransferableDataHelper::operator=( const TransferableDat { ::osl::MutexGuard aGuard(mxImpl->maMutex); - const bool bWasClipboardListening = (nullptr != mxImpl->mpClipboardListener); + const bool bWasClipboardListening = mxImpl->mxClipboardListener.is(); if (bWasClipboardListening) StopClipboardListening(); @@ -1173,7 +1172,7 @@ TransferableDataHelper& TransferableDataHelper::operator=(TransferableDataHelper { ::osl::MutexGuard aGuard(mxImpl->maMutex); - const bool bWasClipboardListening = (nullptr != mxImpl->mpClipboardListener); + const bool bWasClipboardListening = mxImpl->mxClipboardListener.is(); if (bWasClipboardListening) StopClipboardListening(); @@ -2078,21 +2077,19 @@ bool TransferableDataHelper::StartClipboardListening( ) StopClipboardListening( ); - mxImpl->mpClipboardListener = new TransferableClipboardNotifier(mxClipboard, *this, mxImpl->maMutex); - mxImpl->mpClipboardListener->acquire(); + mxImpl->mxClipboardListener = new TransferableClipboardNotifier(mxClipboard, *this, mxImpl->maMutex); - return mxImpl->mpClipboardListener->isListening(); + return mxImpl->mxClipboardListener->isListening(); } void TransferableDataHelper::StopClipboardListening( ) { ::osl::MutexGuard aGuard(mxImpl->maMutex); - if (mxImpl->mpClipboardListener) + if (mxImpl->mxClipboardListener.is()) { - mxImpl->mpClipboardListener->dispose(); - mxImpl->mpClipboardListener->release(); - mxImpl->mpClipboardListener = nullptr; + mxImpl->mxClipboardListener->dispose(); + mxImpl->mxClipboardListener.clear(); } } commit 6f1123d3ddd6108f486964182f92854db9a13a7e Author: Noel Grandin <[email protected]> Date: Fri Jan 20 15:02:32 2017 +0200 use rtl::Reference in Ruler instead of manual acquire/release Change-Id: I7815a0a3c01fce57b4798ac1dbf501e20444c61d diff --git a/include/svtools/ruler.hxx b/include/svtools/ruler.hxx index 1c5b0cd..aa2fc2c 100644 --- a/include/svtools/ruler.hxx +++ b/include/svtools/ruler.hxx @@ -21,6 +21,7 @@ #define INCLUDED_SVTOOLS_RULER_HXX #include <svtools/svtdllapi.h> +#include <rtl/ref.hxx> #include <tools/link.hxx> #include <tools/fract.hxx> #include <vcl/window.hxx> @@ -660,7 +661,7 @@ private: std::unique_ptr<RulerSelection> mxCurrentHitTest; std::unique_ptr<RulerSelection> mxPreviousHitTest; - SvtRulerAccessible* pAccContext; + rtl::Reference<SvtRulerAccessible> mxAccContext; SVT_DLLPRIVATE void ImplVDrawLine(vcl::RenderContext& rRenderContext, long nX1, long nY1, long nX2, long nY2 ); SVT_DLLPRIVATE void ImplVDrawRect(vcl::RenderContext& rRenderContext, long nX1, long nY1, long nX2, long nY2 ); diff --git a/svtools/source/control/ruler.cxx b/svtools/source/control/ruler.cxx index 25fa30a..0981bc1 100644 --- a/svtools/source/control/ruler.cxx +++ b/svtools/source/control/ruler.cxx @@ -283,7 +283,6 @@ void Ruler::ImplInit( WinBits nWinBits ) aDefSize.Width() = nDefHeight; SetOutputSizePixel( aDefSize ); SetType(WINDOW_RULER); - pAccContext = nullptr; } Ruler::Ruler( vcl::Window* pParent, WinBits nWinStyle ) : @@ -334,11 +333,7 @@ void Ruler::dispose() mpSaveData = nullptr; delete mpDragData; mpDragData = nullptr; - if( pAccContext ) - { - pAccContext->release(); - pAccContext = nullptr; - } + mxAccContext.clear(); Window::dispose(); } @@ -2827,10 +2822,9 @@ uno::Reference< XAccessible > Ruler::CreateAccessible() { aStr = SvtResId(STR_SVT_ACC_RULER_VERT_NAME); } - pAccContext = new SvtRulerAccessible( xAccParent, *this, aStr ); - pAccContext->acquire(); - this->SetAccessible(pAccContext); - return pAccContext; + mxAccContext = new SvtRulerAccessible( xAccParent, *this, aStr ); + this->SetAccessible(mxAccContext.get()); + return mxAccContext.get(); } else return uno::Reference< XAccessible >(); commit bbd8c94967a4d227be46c1e777efd5b4bcf95429 Author: Noel Grandin <[email protected]> Date: Fri Jan 20 15:02:10 2017 +0200 use rtl::Reference in stoc instead of manual acquire/release Change-Id: I626ad9875528fa76d8f781b07cc86e149032ecb1 diff --git a/stoc/source/corereflection/base.hxx b/stoc/source/corereflection/base.hxx index 79d5592..5f4676e 100644 --- a/stoc/source/corereflection/base.hxx +++ b/stoc/source/corereflection/base.hxx @@ -34,6 +34,7 @@ #include <cppuhelper/component.hxx> #include <cppuhelper/typeprovider.hxx> #include <rtl/ustring.hxx> +#include <rtl/ref.hxx> #include "lrucache.hxx" @@ -143,7 +144,8 @@ public: class IdlClassImpl : public ::cppu::WeakImplHelper< css::reflection::XIdlClass > { - IdlReflectionServiceImpl * _pReflection; + rtl::Reference<IdlReflectionServiceImpl> + m_xReflection; OUString _aName; css::uno::TypeClass _eTypeClass; @@ -154,7 +156,7 @@ public: typelib_TypeDescription * getTypeDescr() const { return _pTypeDescr; } IdlReflectionServiceImpl * getReflection() const - { return _pReflection; } + { return m_xReflection.get(); } // Ctor IdlClassImpl( IdlReflectionServiceImpl * pReflection, @@ -327,7 +329,8 @@ public: class IdlMemberImpl : public ::cppu::WeakImplHelper< css::reflection::XIdlMember > { - IdlReflectionServiceImpl * _pReflection; + rtl::Reference<IdlReflectionServiceImpl> + m_xReflection; OUString _aName; typelib_TypeDescription * _pTypeDescr; @@ -338,7 +341,7 @@ protected: public: IdlReflectionServiceImpl * getReflection() const - { return _pReflection; } + { return m_xReflection.get(); } typelib_TypeDescription * getTypeDescr() const { return _pTypeDescr; } typelib_TypeDescription * getDeclTypeDescr() const diff --git a/stoc/source/corereflection/crbase.cxx b/stoc/source/corereflection/crbase.cxx index aa8fded..a1deec9 100644 --- a/stoc/source/corereflection/crbase.cxx +++ b/stoc/source/corereflection/crbase.cxx @@ -52,13 +52,11 @@ ClassNameList g_aClassNames; IdlClassImpl::IdlClassImpl( IdlReflectionServiceImpl * pReflection, const OUString & rName, typelib_TypeClass eTypeClass, typelib_TypeDescription * pTypeDescr ) - : _pReflection( pReflection ) + : m_xReflection( pReflection ) , _aName( rName ) , _eTypeClass( (TypeClass)eTypeClass ) , _pTypeDescr( pTypeDescr ) { - if (_pReflection) - _pReflection->acquire(); if (_pTypeDescr) { typelib_typedescription_acquire( _pTypeDescr ); @@ -77,8 +75,7 @@ IdlClassImpl::~IdlClassImpl() { if (_pTypeDescr) typelib_typedescription_release( _pTypeDescr ); - if (_pReflection) - _pReflection->release(); + m_xReflection.clear(); #ifdef TEST_LIST_CLASSES ClassNameList::iterator iFind( std::find( g_aClassNames.begin(), g_aClassNames.end(), _aName ) ); @@ -231,12 +228,11 @@ Reference< XIdlArray > IdlClassImpl::getArray() IdlMemberImpl::IdlMemberImpl( IdlReflectionServiceImpl * pReflection, const OUString & rName, typelib_TypeDescription * pTypeDescr, typelib_TypeDescription * pDeclTypeDescr ) - : _pReflection( pReflection ) + : m_xReflection( pReflection ) , _aName( rName ) , _pTypeDescr( pTypeDescr ) , _pDeclTypeDescr( pDeclTypeDescr ) { - _pReflection->acquire(); typelib_typedescription_acquire( _pTypeDescr ); if (! _pTypeDescr->bComplete) typelib_typedescription_complete( &_pTypeDescr ); @@ -249,7 +245,6 @@ IdlMemberImpl::~IdlMemberImpl() { typelib_typedescription_release( _pDeclTypeDescr ); typelib_typedescription_release( _pTypeDescr ); - _pReflection->release(); } // XIdlMember commit ca958f886c660ce096ef59cef808fbf46b116e3c Author: Noel Grandin <[email protected]> Date: Fri Jan 20 14:54:06 2017 +0200 use rtl::Reference in SfxInPlaceClient instead of manual acquire/release Change-Id: I4ebbdbcbd619991c3dae0733b797f310903f96e6 diff --git a/include/sfx2/ipclient.hxx b/include/sfx2/ipclient.hxx index 0615ca6..23ec5e4 100644 --- a/include/sfx2/ipclient.hxx +++ b/include/sfx2/ipclient.hxx @@ -25,6 +25,7 @@ #include <com/sun/star/uno/Reference.h> #include <com/sun/star/embed/Aspects.hpp> #include <com/sun/star/embed/XEmbeddedObject.hpp> +#include <rtl/ref.hxx> #include <tools/gen.hxx> @@ -41,7 +42,7 @@ class SFX2_DLLPUBLIC SfxInPlaceClient { friend class SfxInPlaceClient_Impl; - SfxInPlaceClient_Impl* m_pImp; + rtl::Reference<SfxInPlaceClient_Impl> m_xImp; SfxViewShell* m_pViewSh; VclPtr<vcl::Window> m_pEditWin; diff --git a/sfx2/source/view/ipclient.cxx b/sfx2/source/view/ipclient.cxx index 69b16c0..5d29f65 100644 --- a/sfx2/source/view/ipclient.cxx +++ b/sfx2/source/view/ipclient.cxx @@ -599,18 +599,17 @@ IMPL_LINK_NOARG(SfxInPlaceClient_Impl, TimerHdl, Timer *, void) SfxInPlaceClient::SfxInPlaceClient( SfxViewShell* pViewShell, vcl::Window *pDraw, sal_Int64 nAspect ) : - m_pImp( new SfxInPlaceClient_Impl ), + m_xImp( new SfxInPlaceClient_Impl ), m_pViewSh( pViewShell ), m_pEditWin( pDraw ) { - m_pImp->acquire(); - m_pImp->m_pClient = this; - m_pImp->m_nAspect = nAspect; - m_pImp->m_aScaleWidth = m_pImp->m_aScaleHeight = Fraction(1,1); - m_pImp->m_xClient = static_cast< embed::XEmbeddedClient* >( m_pImp ); + m_xImp->m_pClient = this; + m_xImp->m_nAspect = nAspect; + m_xImp->m_aScaleWidth = m_xImp->m_aScaleHeight = Fraction(1,1); + m_xImp->m_xClient = static_cast< embed::XEmbeddedClient* >( m_xImp.get() ); pViewShell->NewIPClient_Impl(this); - m_pImp->m_aTimer.SetTimeout( SFX_CLIENTACTIVATE_TIMEOUT ); - m_pImp->m_aTimer.SetTimeoutHdl( LINK( m_pImp, SfxInPlaceClient_Impl, TimerHdl ) ); + m_xImp->m_aTimer.SetTimeout( SFX_CLIENTACTIVATE_TIMEOUT ); + m_xImp->m_aTimer.SetTimeoutHdl( LINK( m_xImp.get(), SfxInPlaceClient_Impl, TimerHdl ) ); } @@ -619,14 +618,13 @@ SfxInPlaceClient::~SfxInPlaceClient() m_pViewSh->IPClientGone_Impl(this); // deleting the client before storing the object means discarding all changes - m_pImp->m_bStoreObject = false; + m_xImp->m_bStoreObject = false; SetObject(nullptr); - m_pImp->m_pClient = nullptr; + m_xImp->m_pClient = nullptr; - // the next call will destroy m_pImp if no other reference to it exists - m_pImp->m_xClient.clear(); - m_pImp->release(); + // the next call will destroy m_xImp if no other reference to it exists + m_xImp->m_xClient.clear(); // TODO/LATER: // the class is not intended to be used in multithreaded environment; @@ -639,7 +637,7 @@ void SfxInPlaceClient::SetObjectState( sal_Int32 nState ) { if ( GetObject().is() ) { - if ( m_pImp->m_nAspect == embed::Aspects::MSOLE_ICON + if ( m_xImp->m_nAspect == embed::Aspects::MSOLE_ICON && ( nState == embed::EmbedStates::UI_ACTIVE || nState == embed::EmbedStates::INPLACE_ACTIVE ) ) { OSL_FAIL( "Iconified object should not be activated inplace!\n" ); @@ -659,31 +657,31 @@ void SfxInPlaceClient::SetObjectState( sal_Int32 nState ) sal_Int64 SfxInPlaceClient::GetObjectMiscStatus() const { if ( GetObject().is() ) - return GetObject()->getStatus( m_pImp->m_nAspect ); + return GetObject()->getStatus( m_xImp->m_nAspect ); return 0; } const uno::Reference < embed::XEmbeddedObject >& SfxInPlaceClient::GetObject() const { - return m_pImp->m_xObject; + return m_xImp->m_xObject; } void SfxInPlaceClient::SetObject( const uno::Reference < embed::XEmbeddedObject >& rObject ) { - if ( m_pImp->m_xObject.is() && rObject != m_pImp->m_xObject ) + if ( m_xImp->m_xObject.is() && rObject != m_xImp->m_xObject ) { - DBG_ASSERT( GetObject()->getClientSite() == m_pImp->m_xClient, "Wrong ClientSite!" ); - if ( GetObject()->getClientSite() == m_pImp->m_xClient ) + DBG_ASSERT( GetObject()->getClientSite() == m_xImp->m_xClient, "Wrong ClientSite!" ); + if ( GetObject()->getClientSite() == m_xImp->m_xClient ) { if ( GetObject()->getCurrentState() != embed::EmbedStates::LOADED ) SetObjectState( embed::EmbedStates::RUNNING ); - m_pImp->m_xObject->removeEventListener( uno::Reference < document::XEventListener >( m_pImp->m_xClient, uno::UNO_QUERY ) ); - m_pImp->m_xObject->removeStateChangeListener( uno::Reference < embed::XStateChangeListener >( m_pImp->m_xClient, uno::UNO_QUERY ) ); + m_xImp->m_xObject->removeEventListener( uno::Reference < document::XEventListener >( m_xImp->m_xClient, uno::UNO_QUERY ) ); + m_xImp->m_xObject->removeStateChangeListener( uno::Reference < embed::XStateChangeListener >( m_xImp->m_xClient, uno::UNO_QUERY ) ); try { - m_pImp->m_xObject->setClientSite( nullptr ); + m_xImp->m_xObject->setClientSite( nullptr ); } catch( uno::Exception& ) { @@ -696,37 +694,37 @@ void SfxInPlaceClient::SetObject( const uno::Reference < embed::XEmbeddedObject // sometimes applications reconnect clients on shutting down because it happens in their Paint methods return; - m_pImp->m_xObject = rObject; + m_xImp->m_xObject = rObject; if ( rObject.is() ) { // as soon as an object was connected to a client it has to be checked whether the object wants // to be activated - rObject->addStateChangeListener( uno::Reference < embed::XStateChangeListener >( m_pImp->m_xClient, uno::UNO_QUERY ) ); - rObject->addEventListener( uno::Reference < document::XEventListener >( m_pImp->m_xClient, uno::UNO_QUERY ) ); + rObject->addStateChangeListener( uno::Reference < embed::XStateChangeListener >( m_xImp->m_xClient, uno::UNO_QUERY ) ); + rObject->addEventListener( uno::Reference < document::XEventListener >( m_xImp->m_xClient, uno::UNO_QUERY ) ); try { - rObject->setClientSite( m_pImp->m_xClient ); + rObject->setClientSite( m_xImp->m_xClient ); } catch( uno::Exception& ) { OSL_FAIL( "Can not set the client site!\n" ); } - m_pImp->m_aTimer.Start(); + m_xImp->m_aTimer.Start(); } else - m_pImp->m_aTimer.Stop(); + m_xImp->m_aTimer.Stop(); } bool SfxInPlaceClient::SetObjArea( const Rectangle& rArea ) { - if( rArea != m_pImp->m_aObjArea ) + if( rArea != m_xImp->m_aObjArea ) { - m_pImp->m_aObjArea = rArea; - m_pImp->SizeHasChanged(); + m_xImp->m_aObjArea = rArea; + m_xImp->SizeHasChanged(); Invalidate(); return true; @@ -738,26 +736,26 @@ bool SfxInPlaceClient::SetObjArea( const Rectangle& rArea ) const Rectangle& SfxInPlaceClient::GetObjArea() const { - return m_pImp->m_aObjArea; + return m_xImp->m_aObjArea; } Rectangle SfxInPlaceClient::GetScaledObjArea() const { - Rectangle aRealObjArea( m_pImp->m_aObjArea ); - aRealObjArea.SetSize( Size( Fraction( aRealObjArea.GetWidth() ) * m_pImp->m_aScaleWidth, - Fraction( aRealObjArea.GetHeight() ) * m_pImp->m_aScaleHeight ) ); + Rectangle aRealObjArea( m_xImp->m_aObjArea ); + aRealObjArea.SetSize( Size( Fraction( aRealObjArea.GetWidth() ) * m_xImp->m_aScaleWidth, + Fraction( aRealObjArea.GetHeight() ) * m_xImp->m_aScaleHeight ) ); return aRealObjArea; } void SfxInPlaceClient::SetSizeScale( const Fraction & rScaleWidth, const Fraction & rScaleHeight ) { - if ( m_pImp->m_aScaleWidth != rScaleWidth || m_pImp->m_aScaleHeight != rScaleHeight ) + if ( m_xImp->m_aScaleWidth != rScaleWidth || m_xImp->m_aScaleHeight != rScaleHeight ) { - m_pImp->m_aScaleWidth = rScaleWidth; - m_pImp->m_aScaleHeight = rScaleHeight; + m_xImp->m_aScaleWidth = rScaleWidth; + m_xImp->m_aScaleHeight = rScaleHeight; - m_pImp->SizeHasChanged(); + m_xImp->SizeHasChanged(); // TODO/LATER: Invalidate seems to trigger (wrong) recalculations of the ObjArea, so it's better // not to call it here, but maybe it sounds reasonable to do so. @@ -768,13 +766,13 @@ void SfxInPlaceClient::SetSizeScale( const Fraction & rScaleWidth, const Fractio void SfxInPlaceClient::SetObjAreaAndScale( const Rectangle& rArea, const Fraction& rScaleWidth, const Fraction& rScaleHeight ) { - if( rArea != m_pImp->m_aObjArea || m_pImp->m_aScaleWidth != rScaleWidth || m_pImp->m_aScaleHeight != rScaleHeight ) + if( rArea != m_xImp->m_aObjArea || m_xImp->m_aScaleWidth != rScaleWidth || m_xImp->m_aScaleHeight != rScaleHeight ) { - m_pImp->m_aObjArea = rArea; - m_pImp->m_aScaleWidth = rScaleWidth; - m_pImp->m_aScaleHeight = rScaleHeight; + m_xImp->m_aObjArea = rArea; + m_xImp->m_aScaleWidth = rScaleWidth; + m_xImp->m_aScaleHeight = rScaleHeight; - m_pImp->SizeHasChanged(); + m_xImp->SizeHasChanged(); Invalidate(); } @@ -783,13 +781,13 @@ void SfxInPlaceClient::SetObjAreaAndScale( const Rectangle& rArea, const Fractio const Fraction& SfxInPlaceClient::GetScaleWidth() const { - return m_pImp->m_aScaleWidth; + return m_xImp->m_aScaleWidth; } const Fraction& SfxInPlaceClient::GetScaleHeight() const { - return m_pImp->m_aScaleHeight; + return m_xImp->m_aScaleHeight; } @@ -798,9 +796,9 @@ void SfxInPlaceClient::Invalidate() // TODO/LATER: do we need both? // the object area is provided in logical coordinates of the window but without scaling applied - Rectangle aRealObjArea( m_pImp->m_aObjArea ); - aRealObjArea.SetSize( Size( Fraction( aRealObjArea.GetWidth() ) * m_pImp->m_aScaleWidth, - Fraction( aRealObjArea.GetHeight() ) * m_pImp->m_aScaleHeight ) ); + Rectangle aRealObjArea( m_xImp->m_aObjArea ); + aRealObjArea.SetSize( Size( Fraction( aRealObjArea.GetWidth() ) * m_xImp->m_aScaleWidth, + Fraction( aRealObjArea.GetHeight() ) * m_xImp->m_aScaleHeight ) ); m_pEditWin->Invalidate( aRealObjArea ); ViewChanged(); @@ -810,7 +808,7 @@ void SfxInPlaceClient::Invalidate() bool SfxInPlaceClient::IsObjectUIActive() const { try { - return ( m_pImp->m_xObject.is() && ( m_pImp->m_xObject->getCurrentState() == embed::EmbedStates::UI_ACTIVE ) ); + return ( m_xImp->m_xObject.is() && ( m_xImp->m_xObject->getCurrentState() == embed::EmbedStates::UI_ACTIVE ) ); } catch( uno::Exception& ) {} @@ -824,12 +822,12 @@ bool SfxInPlaceClient::IsObjectInPlaceActive() const try { return( ( - m_pImp->m_xObject.is() && - (m_pImp->m_xObject->getCurrentState() == embed::EmbedStates::INPLACE_ACTIVE) + m_xImp->m_xObject.is() && + (m_xImp->m_xObject->getCurrentState() == embed::EmbedStates::INPLACE_ACTIVE) ) || ( - m_pImp->m_xObject.is() && - (m_pImp->m_xObject->getCurrentState() == embed::EmbedStates::UI_ACTIVE) + m_xImp->m_xObject.is() && + (m_xImp->m_xObject->getCurrentState() == embed::EmbedStates::UI_ACTIVE) ) ); } @@ -857,7 +855,7 @@ SfxInPlaceClient* SfxInPlaceClient::GetClient( SfxObjectShell* pDoc, const css:: sal_Int64 SfxInPlaceClient::GetAspect() const { - return m_pImp->m_nAspect; + return m_xImp->m_nAspect; } ErrCode SfxInPlaceClient::DoVerb( long nVerb ) @@ -865,14 +863,14 @@ ErrCode SfxInPlaceClient::DoVerb( long nVerb ) SfxErrorContext aEc( ERRCTX_SO_DOVERB, m_pViewSh->GetWindow(), RID_SO_ERRCTX ); ErrCode nError = ERRCODE_NONE; - if ( m_pImp->m_xObject.is() ) + if ( m_xImp->m_xObject.is() ) { bool bSaveCopyAs = false; if ( nVerb == -8 ) // "Save Copy as..." { - svt::EmbeddedObjectRef::TryRunningState( m_pImp->m_xObject ); + svt::EmbeddedObjectRef::TryRunningState( m_xImp->m_xObject ); // TODO/LATER: this special verb should disappear when outplace activation is completely available - uno::Reference< frame::XModel > xEmbModel( m_pImp->m_xObject->getComponent(), uno::UNO_QUERY ); + uno::Reference< frame::XModel > xEmbModel( m_xImp->m_xObject->getComponent(), uno::UNO_QUERY ); if ( xEmbModel.is() ) { bSaveCopyAs = true; @@ -905,11 +903,11 @@ ErrCode SfxInPlaceClient::DoVerb( long nVerb ) if ( !bSaveCopyAs ) { - if ( m_pImp->m_nAspect == embed::Aspects::MSOLE_ICON ) + if ( m_xImp->m_nAspect == embed::Aspects::MSOLE_ICON ) { // the common persistence is supported by objects and links - uno::Reference< embed::XEmbeddedOleObject > xEmbeddedOleObject( m_pImp->m_xObject, uno::UNO_QUERY ); + uno::Reference< embed::XEmbeddedOleObject > xEmbeddedOleObject( m_xImp->m_xObject, uno::UNO_QUERY ); if ( xEmbeddedOleObject.is() && (nVerb == embed::EmbedVerbs::MS_OLEVERB_PRIMARY || nVerb == embed::EmbedVerbs::MS_OLEVERB_OPEN || nVerb == embed::EmbedVerbs::MS_OLEVERB_SHOW )) nVerb = embed::EmbedVerbs::MS_OLEVERB_SHOW; @@ -926,9 +924,9 @@ ErrCode SfxInPlaceClient::DoVerb( long nVerb ) m_pViewSh->GetViewFrame()->GetFrame().LockResize_Impl(true); try { - m_pImp->m_xObject->setClientSite( m_pImp->m_xClient ); + m_xImp->m_xObject->setClientSite( m_xImp->m_xClient ); - m_pImp->m_xObject->doVerb( nVerb ); + m_xImp->m_xObject->doVerb( nVerb ); } catch ( embed::UnreachableStateException& ) { @@ -937,20 +935,20 @@ ErrCode SfxInPlaceClient::DoVerb( long nVerb ) // a workaround for the default verb, usually makes sense for alien objects try { - m_pImp->m_xObject->doVerb( -9 ); // open own view, a workaround verb that is not visible + m_xImp->m_xObject->doVerb( -9 ); // open own view, a workaround verb that is not visible - if ( m_pImp->m_xObject->getCurrentState() == embed::EmbedStates::UI_ACTIVE ) + if ( m_xImp->m_xObject->getCurrentState() == embed::EmbedStates::UI_ACTIVE ) { // the object was converted to OOo object - awt::Size aSize = m_pImp->m_xObject->getVisualAreaSize( m_pImp->m_nAspect ); - MapMode aObjectMap( VCLUnoHelper::UnoEmbed2VCLMapUnit( m_pImp->m_xObject->getMapUnit( m_pImp->m_nAspect ) ) ); + awt::Size aSize = m_xImp->m_xObject->getVisualAreaSize( m_xImp->m_nAspect ); + MapMode aObjectMap( VCLUnoHelper::UnoEmbed2VCLMapUnit( m_xImp->m_xObject->getMapUnit( m_xImp->m_nAspect ) ) ); MapMode aClientMap( GetEditWin()->GetMapMode().GetMapUnit() ); Size aNewSize = GetEditWin()->LogicToLogic( Size( aSize.Width, aSize.Height ), &aObjectMap, &aClientMap ); Rectangle aScaledArea = GetScaledObjArea(); - m_pImp->m_aObjArea.SetSize( aNewSize ); - m_pImp->m_aScaleWidth = Fraction( aScaledArea.GetWidth(), aNewSize.Width() ); - m_pImp->m_aScaleHeight = Fraction( aScaledArea.GetHeight(), aNewSize.Height() ); + m_xImp->m_aObjArea.SetSize( aNewSize ); + m_xImp->m_aScaleWidth = Fraction( aScaledArea.GetWidth(), aNewSize.Width() ); + m_xImp->m_aScaleHeight = Fraction( aScaledArea.GetHeight(), aNewSize.Height() ); } } catch (uno::Exception const& e) @@ -990,10 +988,10 @@ ErrCode SfxInPlaceClient::DoVerb( long nVerb ) void SfxInPlaceClient::VisAreaChanged() { - uno::Reference < embed::XInplaceObject > xObj( m_pImp->m_xObject, uno::UNO_QUERY ); - uno::Reference < embed::XInplaceClient > xClient( m_pImp->m_xClient, uno::UNO_QUERY ); + uno::Reference < embed::XInplaceObject > xObj( m_xImp->m_xObject, uno::UNO_QUERY ); + uno::Reference < embed::XInplaceClient > xClient( m_xImp->m_xClient, uno::UNO_QUERY ); if ( xObj.is() && xClient.is() ) - m_pImp->SizeHasChanged(); + m_xImp->SizeHasChanged(); } void SfxInPlaceClient::ObjectAreaChanged() @@ -1022,9 +1020,9 @@ void SfxInPlaceClient::DeactivateObject() { try { - m_pImp->m_bUIActive = false; + m_xImp->m_bUIActive = false; bool bHasFocus = false; - uno::Reference< frame::XModel > xModel( m_pImp->m_xObject->getComponent(), uno::UNO_QUERY ); + uno::Reference< frame::XModel > xModel( m_xImp->m_xObject->getComponent(), uno::UNO_QUERY ); if ( xModel.is() ) { uno::Reference< frame::XController > xController = xModel->getCurrentController(); @@ -1037,21 +1035,21 @@ void SfxInPlaceClient::DeactivateObject() m_pViewSh->GetViewFrame()->GetFrame().LockResize_Impl(true); - if ( (m_pImp->m_xObject->getStatus( m_pImp->m_nAspect ) & embed::EmbedMisc::MS_EMBED_ACTIVATEWHENVISIBLE) || - svt::EmbeddedObjectRef::IsGLChart(m_pImp->m_xObject) ) + if ( (m_xImp->m_xObject->getStatus( m_xImp->m_nAspect ) & embed::EmbedMisc::MS_EMBED_ACTIVATEWHENVISIBLE) || + svt::EmbeddedObjectRef::IsGLChart(m_xImp->m_xObject) ) { - m_pImp->m_xObject->changeState( embed::EmbedStates::INPLACE_ACTIVE ); + m_xImp->m_xObject->changeState( embed::EmbedStates::INPLACE_ACTIVE ); if (bHasFocus) m_pViewSh->GetWindow()->GrabFocus(); } else { // the links should not stay in running state for long time because of locking - uno::Reference< embed::XLinkageSupport > xLink( m_pImp->m_xObject, uno::UNO_QUERY ); + uno::Reference< embed::XLinkageSupport > xLink( m_xImp->m_xObject, uno::UNO_QUERY ); if ( xLink.is() && xLink->isLink() ) - m_pImp->m_xObject->changeState( embed::EmbedStates::LOADED ); + m_xImp->m_xObject->changeState( embed::EmbedStates::LOADED ); else - m_pImp->m_xObject->changeState( embed::EmbedStates::RUNNING ); + m_xImp->m_xObject->changeState( embed::EmbedStates::RUNNING ); } SfxViewFrame* pFrame = m_pViewSh->GetViewFrame(); @@ -1070,18 +1068,18 @@ void SfxInPlaceClient::ResetObject() { try { - m_pImp->m_bUIActive = false; - if ( (m_pImp->m_xObject->getStatus( m_pImp->m_nAspect ) & embed::EmbedMisc::MS_EMBED_ACTIVATEWHENVISIBLE) || - svt::EmbeddedObjectRef::IsGLChart(m_pImp->m_xObject) ) - m_pImp->m_xObject->changeState( embed::EmbedStates::INPLACE_ACTIVE ); + m_xImp->m_bUIActive = false; + if ( (m_xImp->m_xObject->getStatus( m_xImp->m_nAspect ) & embed::EmbedMisc::MS_EMBED_ACTIVATEWHENVISIBLE) || + svt::EmbeddedObjectRef::IsGLChart(m_xImp->m_xObject) ) + m_xImp->m_xObject->changeState( embed::EmbedStates::INPLACE_ACTIVE ); else { // the links should not stay in running state for long time because of locking - uno::Reference< embed::XLinkageSupport > xLink( m_pImp->m_xObject, uno::UNO_QUERY ); + uno::Reference< embed::XLinkageSupport > xLink( m_xImp->m_xObject, uno::UNO_QUERY ); if ( xLink.is() && xLink->isLink() ) - m_pImp->m_xObject->changeState( embed::EmbedStates::LOADED ); + m_xImp->m_xObject->changeState( embed::EmbedStates::LOADED ); else - m_pImp->m_xObject->changeState( embed::EmbedStates::RUNNING ); + m_xImp->m_xObject->changeState( embed::EmbedStates::RUNNING ); } } catch (css::uno::Exception& ) @@ -1091,7 +1089,7 @@ void SfxInPlaceClient::ResetObject() bool SfxInPlaceClient::IsUIActive() { - return m_pImp->m_bUIActive; + return m_xImp->m_bUIActive; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 9605f1cd1375fc56e3a3ec76fa04e5a7a3caa70f Author: Noel Grandin <[email protected]> Date: Fri Jan 20 14:49:42 2017 +0200 use rtl::Reference in SfxAppData_Impl instead of manual acquire/release Change-Id: Id8c1b2dbb9acb0861f71f05a83842f357edfc1e8 diff --git a/sfx2/source/appl/appdata.cxx b/sfx2/source/appl/appdata.cxx index e60ec8a..b4a5ff4 100644 --- a/sfx2/source/appl/appdata.cxx +++ b/sfx2/source/appl/appdata.cxx @@ -40,6 +40,7 @@ #include <sfx2/docfile.hxx> #include <sfx2/request.hxx> #include <sfx2/sidebar/Theme.hxx> +#include <sfx2/unoctitm.hxx> #include "app.hrc" #include <sfx2/sfxresid.hxx> #include "objshimp.hxx" @@ -99,7 +100,6 @@ SfxAppData_Impl::SfxAppData_Impl( SfxApplication* ) #if HAVE_FEATURE_SCRIPTING , m_pSbxErrorHdl(nullptr) #endif - , pAppDispatch(nullptr) , pTemplates( nullptr ) , pPool(nullptr) , pProgress(nullptr) diff --git a/sfx2/source/appl/appinit.cxx b/sfx2/source/appl/appinit.cxx index c380879..93f6349 100644 --- a/sfx2/source/appl/appinit.cxx +++ b/sfx2/source/appl/appinit.cxx @@ -112,8 +112,8 @@ void SAL_CALL SfxTerminateListener_Impl::notifyTermination( const EventObject& a SfxApplication* pApp = SfxGetpApp(); pApp->Broadcast( SfxHint( SfxHintId::Deinitializing ) ); - pApp->Get_Impl()->pAppDispatch->ReleaseAll(); - pApp->Get_Impl()->pAppDispatch->release(); + pApp->Get_Impl()->mxAppDispatch->ReleaseAll(); + pApp->Get_Impl()->mxAppDispatch.clear(); css::uno::Reference< css::uno::XComponentContext > xContext = ::comphelper::getProcessComponentContext(); css::uno::Reference< css::document::XDocumentEventListener > xGlobalBroadcaster(css::frame::theGlobalEventBroadcaster::get(xContext), css::uno::UNO_QUERY_THROW); @@ -205,8 +205,7 @@ void SfxApplication::Initialize_Impl() Reference < XDesktop2 > xDesktop = Desktop::create ( ::comphelper::getProcessComponentContext() ); xDesktop->addTerminateListener( new SfxTerminateListener_Impl() ); - pImpl->pAppDispatch = new SfxStatusDispatcher; - pImpl->pAppDispatch->acquire(); + pImpl->mxAppDispatch = new SfxStatusDispatcher; // SV-Look Help::EnableContextHelp(); diff --git a/sfx2/source/inc/appdata.hxx b/sfx2/source/inc/appdata.hxx index bc98e98..29b6bfd 100644 --- a/sfx2/source/inc/appdata.hxx +++ b/sfx2/source/inc/appdata.hxx @@ -93,7 +93,7 @@ public: #if HAVE_FEATURE_SCRIPTING SfxErrorHandler *m_pSbxErrorHdl; #endif - SfxStatusDispatcher* pAppDispatch; + rtl::Reference<SfxStatusDispatcher> mxAppDispatch; SfxDocumentTemplates* pTemplates; // global pointers commit 87a8d05946cb63ff421c14b961ce74fa75bbf083 Author: Noel Grandin <[email protected]> Date: Fri Jan 20 14:44:58 2017 +0200 use rtl::Reference in CellShell_Impl instead of manual acquire/release Change-Id: I4fde1277c023101e5331e3dad4f0243bd8ac8e3f diff --git a/sc/source/ui/inc/cellsh.hxx b/sc/source/ui/inc/cellsh.hxx index 5b0c7d1..5a3ee9ed 100644 --- a/sc/source/ui/inc/cellsh.hxx +++ b/sc/source/ui/inc/cellsh.hxx @@ -30,6 +30,7 @@ #include "formatsh.hxx" #include "address.hxx" #include <vcl/window.hxx> +#include <rtl/ref.hxx> class SvxClipboardFormatItem; class TransferableDataHelper; @@ -38,15 +39,12 @@ class AbstractScLinkedAreaDlg; struct CellShell_Impl { - TransferableClipboardListener* m_pClipEvtLstnr; + rtl::Reference<TransferableClipboardListener> + m_xClipEvtLstnr; VclPtr<AbstractScLinkedAreaDlg> m_pLinkedDlg; SfxRequest* m_pRequest; - CellShell_Impl() : - m_pClipEvtLstnr( nullptr ), - m_pLinkedDlg(), - m_pRequest( nullptr ) {} - + CellShell_Impl(); ~CellShell_Impl(); }; diff --git a/sc/source/ui/view/cellsh.cxx b/sc/source/ui/view/cellsh.cxx index b0a49e2..c82c380 100644 --- a/sc/source/ui/view/cellsh.cxx +++ b/sc/source/ui/view/cellsh.cxx @@ -87,15 +87,15 @@ ScCellShell::ScCellShell(ScViewData* pData, VclPtr<vcl::Window> frameWin) : ScCellShell::~ScCellShell() { - if ( pImpl->m_pClipEvtLstnr ) + if ( pImpl->m_xClipEvtLstnr.is() ) { - pImpl->m_pClipEvtLstnr->RemoveListener( GetViewData()->GetActiveWin() ); + pImpl->m_xClipEvtLstnr->RemoveListener( GetViewData()->GetActiveWin() ); // The listener may just now be waiting for the SolarMutex and call the link // afterwards, in spite of RemoveListener. So the link has to be reset, too. - pImpl->m_pClipEvtLstnr->ClearCallbackLink(); + pImpl->m_xClipEvtLstnr->ClearCallbackLink(); - pImpl->m_pClipEvtLstnr->release(); + pImpl->m_xClipEvtLstnr.clear(); } pImpl->m_pLinkedDlg.disposeAndClear(); @@ -556,13 +556,12 @@ void ScCellShell::GetClipState( SfxItemSet& rSet ) // SID_PASTE_SPECIAL // SID_CLIPBOARD_FORMAT_ITEMS - if ( !pImpl->m_pClipEvtLstnr ) + if ( !pImpl->m_xClipEvtLstnr.is() ) { // create listener - pImpl->m_pClipEvtLstnr = new TransferableClipboardListener( LINK( this, ScCellShell, ClipboardChanged ) ); - pImpl->m_pClipEvtLstnr->acquire(); + pImpl->m_xClipEvtLstnr = new TransferableClipboardListener( LINK( this, ScCellShell, ClipboardChanged ) ); vcl::Window* pWin = GetViewData()->GetActiveWin(); - pImpl->m_pClipEvtLstnr->AddListener( pWin ); + pImpl->m_xClipEvtLstnr->AddListener( pWin ); // get initial state TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( pWin ) ); diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx index f661f34..c0d4d4f 100644 --- a/sc/source/ui/view/cellsh1.cxx +++ b/sc/source/ui/view/cellsh1.cxx @@ -45,6 +45,7 @@ #include <vcl/builderfactory.hxx> #include <unotools/localedatawrapper.hxx> #include <editeng/editview.hxx> +#include <svtools/cliplistener.hxx> #include "cellsh.hxx" #include "sc.hrc" @@ -2986,6 +2987,10 @@ IMPL_LINK_NOARG(ScCellShell, DialogClosed, Dialog&, void) ExecuteExternalSource( sFile, sFilter, sOptions, sSource, nRefresh, *(pImpl->m_pRequest) ); } +CellShell_Impl::CellShell_Impl() : + m_pLinkedDlg(), + m_pRequest( nullptr ) {} + CellShell_Impl::~CellShell_Impl() { } commit a232712f39ab6bc91f9f531d0861dd2096998c79 Author: Noel Grandin <[email protected]> Date: Fri Jan 20 14:37:39 2017 +0200 use rtl::Reference in ScSelectionTransferObj instead of manual acquire/release Change-Id: I056fc3767f2e7b3ffacdd930e9a8e3b71c32620e diff --git a/sc/source/ui/app/seltrans.cxx b/sc/source/ui/app/seltrans.cxx index 6b7eee2..08a4229 100644 --- a/sc/source/ui/app/seltrans.cxx +++ b/sc/source/ui/app/seltrans.cxx @@ -141,9 +141,7 @@ ScSelectionTransferObj* ScSelectionTransferObj::CreateFromView( ScTabView* pView ScSelectionTransferObj::ScSelectionTransferObj( ScTabView* pSource, ScSelectionTransferMode eNewMode ) : pView( pSource ), - eMode( eNewMode ), - pCellData( nullptr ), - pDrawData( nullptr ) + eMode( eNewMode ) { //! store range for StillValid } @@ -168,16 +166,8 @@ void ScSelectionTransferObj::ForgetView() pView = nullptr; eMode = SC_SELTRANS_INVALID; - if (pCellData) - { - pCellData->release(); - pCellData = nullptr; - } - if (pDrawData) - { - pDrawData->release(); - pDrawData = nullptr; - } + mxCellData.clear(); + mxDrawData.clear(); } void ScSelectionTransferObj::AddSupportedFormats() @@ -258,7 +248,7 @@ void ScSelectionTransferObj::AddSupportedFormats() void ScSelectionTransferObj::CreateCellData() { - OSL_ENSURE( !pCellData, "CreateCellData twice" ); + OSL_ENSURE( !mxCellData.is(), "CreateCellData twice" ); if ( pView ) { ScViewData& rViewData = pView->GetViewData(); @@ -306,19 +296,18 @@ void ScSelectionTransferObj::CreateCellData() pTransferObj->SetDragSource( pDocSh, aNewMark ); - pCellData = pTransferObj; - pCellData->acquire(); // keep ref count up - released in ForgetView + mxCellData = pTransferObj; } else delete pClipDoc; } } - OSL_ENSURE( pCellData, "can't create CellData" ); + OSL_ENSURE( mxCellData.is(), "can't create CellData" ); } void ScSelectionTransferObj::CreateDrawData() { - OSL_ENSURE( !pDrawData, "CreateDrawData twice" ); + OSL_ENSURE( !mxDrawData.is(), "CreateDrawData twice" ); if ( pView ) { // similar to ScDrawView::BeginDrag @@ -356,27 +345,26 @@ void ScSelectionTransferObj::CreateDrawData() pTransferObj->SetDrawPersist( aPersistRef ); // keep persist for ole objects alive pTransferObj->SetDragSource( pDrawView ); // copies selection - pDrawData = pTransferObj; - pDrawData->acquire(); // keep ref count up - released in ForgetView + mxDrawData = pTransferObj; } } - OSL_ENSURE( pDrawData, "can't create DrawData" ); + OSL_ENSURE( mxDrawData.is(), "can't create DrawData" ); } ScTransferObj* ScSelectionTransferObj::GetCellData() { - if ( !pCellData && ( eMode == SC_SELTRANS_CELL || eMode == SC_SELTRANS_CELLS ) ) + if ( !mxCellData.is() && ( eMode == SC_SELTRANS_CELL || eMode == SC_SELTRANS_CELLS ) ) CreateCellData(); - return pCellData; + return mxCellData.get(); } ScDrawTransferObj* ScSelectionTransferObj::GetDrawData() { - if ( !pDrawData && ( eMode == SC_SELTRANS_DRAW_BITMAP || eMode == SC_SELTRANS_DRAW_GRAPHIC || - eMode == SC_SELTRANS_DRAW_BOOKMARK || eMode == SC_SELTRANS_DRAW_OLE || - eMode == SC_SELTRANS_DRAW_OTHER ) ) + if ( !mxDrawData.is() && ( eMode == SC_SELTRANS_DRAW_BITMAP || eMode == SC_SELTRANS_DRAW_GRAPHIC || + eMode == SC_SELTRANS_DRAW_BOOKMARK || eMode == SC_SELTRANS_DRAW_OLE || + eMode == SC_SELTRANS_DRAW_OTHER ) ) CreateDrawData(); - return pDrawData; + return mxDrawData.get(); } bool ScSelectionTransferObj::GetData( diff --git a/sc/source/ui/inc/seltrans.hxx b/sc/source/ui/inc/seltrans.hxx index 438818b..cb757fb 100644 --- a/sc/source/ui/inc/seltrans.hxx +++ b/sc/source/ui/inc/seltrans.hxx @@ -21,6 +21,7 @@ #define INCLUDED_SC_SOURCE_UI_INC_SELTRANS_HXX #include <svtools/transfer.hxx> +#include <rtl/ref.hxx> class ScTabView; class ScTransferObj; @@ -41,10 +42,10 @@ enum ScSelectionTransferMode class ScSelectionTransferObj : public TransferableHelper { private: - ScTabView* pView; - ScSelectionTransferMode eMode; - ScTransferObj* pCellData; - ScDrawTransferObj* pDrawData; + ScTabView* pView; + ScSelectionTransferMode eMode; + rtl::Reference<ScTransferObj> mxCellData; + rtl::Reference<ScDrawTransferObj> mxDrawData; ScSelectionTransferObj( ScTabView* pSource, ScSelectionTransferMode eNewMode ); void CreateCellData(); commit 8abcd0c38707a61fe5175840f19c2d0a9f8825ee Author: Noel Grandin <[email protected]> Date: Fri Jan 20 13:55:21 2017 +0200 use tools::SvRef in ImpSdrObjTextLinkUserData since the field is SvRefBase-derived Change-Id: Ie84c48daf93e3805b2db240a497a8496779fe750 diff --git a/include/svx/svdotext.hxx b/include/svx/svdotext.hxx index 1790e48..3a8ddca 100644 --- a/include/svx/svdotext.hxx +++ b/include/svx/svdotext.hxx @@ -32,6 +32,7 @@ #include <svx/svxdllapi.h> #include <drawinglayer/primitive2d/baseprimitive2d.hxx> #include <svx/svdpagv.hxx> +#include <rtl/ref.hxx> // forward declarations @@ -105,7 +106,7 @@ class ImpSdrObjTextLinkUserData : public SdrObjUserData OUString aFileName; // Name des referenzierten Dokuments OUString aFilterName; // ggf. ein Filter DateTime aFileDate0; // Unnoetiges neuladen vermeiden - std::unique_ptr<ImpSdrObjTextLink> + tools::SvRef<ImpSdrObjTextLink> pLink; rtl_TextEncoding eCharSet; diff --git a/svx/source/svdraw/svdotxln.cxx b/svx/source/svdraw/svdotxln.cxx index e6d4d4f..5568347 100644 --- a/svx/source/svdraw/svdotxln.cxx +++ b/svx/source/svdraw/svdotxln.cxx @@ -257,7 +257,7 @@ void SdrTextObj::ImpLinkAnmeldung() ImpSdrObjTextLinkUserData* pData=GetLinkUserData(); sfx2::LinkManager* pLinkManager=pModel!=nullptr ? pModel->GetLinkManager() : nullptr; if (pLinkManager!=nullptr && pData!=nullptr && pData->pLink==nullptr) { // don't register twice - pData->pLink.reset( new ImpSdrObjTextLink(this) ); + pData->pLink = new ImpSdrObjTextLink(this); pLinkManager->InsertFileLink(*pData->pLink,OBJECT_CLIENT_FILE,pData->aFileName, !pData->aFilterName.isEmpty() ? &pData->aFilterName : nullptr); commit dc3377528186f4f111553530fa0ffd7f64711f64 Author: Noel Grandin <[email protected]> Date: Fri Jan 20 13:47:21 2017 +0200 use rtl::Reference in ODatabaseForm rather than manual acquire/release Change-Id: Ic5f013b7e4cafc597c659c61fbf568adccfd806a diff --git a/forms/source/component/DatabaseForm.cxx b/forms/source/component/DatabaseForm.cxx index d61c7a7..dfa7224 100644 --- a/forms/source/component/DatabaseForm.cxx +++ b/forms/source/component/DatabaseForm.cxx @@ -258,7 +258,6 @@ ODatabaseForm::ODatabaseForm(const Reference<XComponentContext>& _rxContext) ,m_aErrorListeners(m_aMutex) ,m_aResetListeners( *this, m_aMutex ) ,m_aPropertyBagHelper( *this ) - ,m_pAggregatePropertyMultiplexer(nullptr) ,m_aParameterManager( m_aMutex, _rxContext ) ,m_aFilterManager() ,m_pLoadTimer(nullptr) @@ -294,7 +293,6 @@ ODatabaseForm::ODatabaseForm( const ODatabaseForm& _cloneSource ) ,m_aErrorListeners( m_aMutex ) ,m_aResetListeners( *this, m_aMutex ) ,m_aPropertyBagHelper( *this ) - ,m_pAggregatePropertyMultiplexer( nullptr ) ,m_aParameterManager( m_aMutex, _cloneSource.m_xContext ) ,m_aFilterManager() ,m_pLoadTimer( nullptr ) @@ -392,10 +390,9 @@ void ODatabaseForm::impl_construct() // listen for the properties, important for Parameters if ( m_xAggregateSet.is() ) { - m_pAggregatePropertyMultiplexer = new OPropertyChangeMultiplexer(this, m_xAggregateSet, false); - m_pAggregatePropertyMultiplexer->acquire(); - m_pAggregatePropertyMultiplexer->addProperty(PROPERTY_COMMAND); - m_pAggregatePropertyMultiplexer->addProperty(PROPERTY_ACTIVE_CONNECTION); + m_xAggregatePropertyMultiplexer = new OPropertyChangeMultiplexer(this, m_xAggregateSet, false); + m_xAggregatePropertyMultiplexer->addProperty(PROPERTY_COMMAND); + m_xAggregatePropertyMultiplexer->addProperty(PROPERTY_ACTIVE_CONNECTION); } { @@ -429,11 +426,10 @@ ODatabaseForm::~ODatabaseForm() m_aWarnings.setExternalWarnings( nullptr ); - if (m_pAggregatePropertyMultiplexer) + if (m_xAggregatePropertyMultiplexer.is()) { - m_pAggregatePropertyMultiplexer->dispose(); - m_pAggregatePropertyMultiplexer->release(); - m_pAggregatePropertyMultiplexer = nullptr; + m_xAggregatePropertyMultiplexer->dispose(); + m_xAggregatePropertyMultiplexer.clear(); } } @@ -1252,8 +1248,8 @@ bool ODatabaseForm::executeRowSet(::osl::ResettableMutexGuard& _rClearForNotifie void ODatabaseForm::disposing() { - if (m_pAggregatePropertyMultiplexer) - m_pAggregatePropertyMultiplexer->dispose(); + if (m_xAggregatePropertyMultiplexer.is()) + m_xAggregatePropertyMultiplexer->dispose(); if (m_bLoaded) unload(); diff --git a/forms/source/component/DatabaseForm.hxx b/forms/source/component/DatabaseForm.hxx index 683e51a..f041f51 100644 --- a/forms/source/component/DatabaseForm.hxx +++ b/forms/source/component/DatabaseForm.hxx @@ -73,6 +73,7 @@ #include <cppuhelper/implbase12.hxx> #include <cppuhelper/implbase4.hxx> #include <cppuhelper/implbase7.hxx> +#include <rtl/ref.hxx> namespace com { namespace sun { namespace star { namespace sdbc { class SQLException; @@ -173,7 +174,7 @@ class ODatabaseForm :public OFormComponents PropertyBagHelper m_aPropertyBagHelper; ::dbtools::WarningsContainer m_aWarnings; - OPropertyChangeMultiplexer* m_pAggregatePropertyMultiplexer; + rtl::Reference<OPropertyChangeMultiplexer> m_xAggregatePropertyMultiplexer; // Management of the Control Groups rtl::Reference<OGroupManager> m_pGroupManager; ::dbtools::ParameterManager m_aParameterManager; commit 9c6bdac80b9f61d224a239317f2558ddd7e1744d Author: Noel Grandin <[email protected]> Date: Fri Jan 20 13:43:25 2017 +0200 use rtl::Reference in SubmissionPropertyHandler rather than manual acquire/release Change-Id: I3276361153591a3af8c6b00b478365b2700dedf5 diff --git a/extensions/source/propctrlr/submissionhandler.cxx b/extensions/source/propctrlr/submissionhandler.cxx index f523cc7..ed0b5d3 100644 --- a/extensions/source/propctrlr/submissionhandler.cxx +++ b/extensions/source/propctrlr/submissionhandler.cxx @@ -93,7 +93,6 @@ namespace pcr SubmissionPropertyHandler::SubmissionPropertyHandler( const Reference< XComponentContext >& _rxContext ) :EditPropertyHandler_Base( _rxContext ) ,OPropertyChangeListener( m_aMutex ) - ,m_pPropChangeMultiplexer( nullptr ) { } @@ -236,11 +235,10 @@ namespace pcr void SubmissionPropertyHandler::onNewComponent() { - if ( m_pPropChangeMultiplexer ) + if ( m_xPropChangeMultiplexer.is() ) { - m_pPropChangeMultiplexer->dispose(); - m_pPropChangeMultiplexer->release(); - m_pPropChangeMultiplexer = nullptr; + m_xPropChangeMultiplexer->dispose(); + m_xPropChangeMultiplexer.clear(); } EditPropertyHandler_Base::onNewComponent(); @@ -254,9 +252,8 @@ namespace pcr { m_pHelper.reset( new SubmissionHelper( m_aMutex, m_xComponent, xDocument ) ); - m_pPropChangeMultiplexer = new OPropertyChangeMultiplexer( this, m_xComponent ); - m_pPropChangeMultiplexer->acquire(); - m_pPropChangeMultiplexer->addProperty( PROPERTY_BUTTONTYPE ); + m_xPropChangeMultiplexer = new OPropertyChangeMultiplexer( this, m_xComponent ); + m_xPropChangeMultiplexer->addProperty( PROPERTY_BUTTONTYPE ); } } diff --git a/extensions/source/propctrlr/submissionhandler.hxx b/extensions/source/propctrlr/submissionhandler.hxx index 63bcbb3..f0408e4 100644 --- a/extensions/source/propctrlr/submissionhandler.hxx +++ b/extensions/source/propctrlr/submissionhandler.hxx @@ -25,6 +25,7 @@ #include <com/sun/star/xforms/XSubmission.hpp> #include <comphelper/propmultiplex.hxx> +#include <rtl/ref.hxx> namespace comphelper { @@ -68,8 +69,8 @@ namespace pcr class SubmissionPropertyHandler : public EditPropertyHandler_Base, public ::comphelper::OPropertyChangeListener { private: - ::std::unique_ptr< SubmissionHelper > m_pHelper; - ::comphelper::OPropertyChangeMultiplexer* m_pPropChangeMultiplexer; + ::std::unique_ptr< SubmissionHelper > m_pHelper; + rtl::Reference<::comphelper::OPropertyChangeMultiplexer> m_xPropChangeMultiplexer; public: explicit SubmissionPropertyHandler( commit 32f4f3b52ad491ab83a67dfe57ea4f27d66b39a7 Author: Noel Grandin <[email protected]> Date: Fri Jan 20 13:41:26 2017 +0200 use rtl::Reference in bib::OComponentListener rather than manual acquire/release Change-Id: Ib4b52fb4a85223f974e9905bc3d02eb839150030 diff --git a/extensions/source/bibliography/loadlisteneradapter.cxx b/extensions/source/bibliography/loadlisteneradapter.cxx index d25c7f0..7b6f35a 100644 --- a/extensions/source/bibliography/loadlisteneradapter.cxx +++ b/extensions/source/bibliography/loadlisteneradapter.cxx @@ -32,31 +32,16 @@ namespace bib OComponentListener::~OComponentListener() { - { - ::osl::MutexGuard aGuard( m_rMutex ); - if ( m_pAdapter ) - m_pAdapter->dispose(); - } + ::osl::MutexGuard aGuard( m_rMutex ); + if ( m_xAdapter.is() ) + m_xAdapter->dispose(); } void OComponentListener::setAdapter( OComponentAdapterBase* pAdapter ) { - { - ::osl::MutexGuard aGuard( m_rMutex ); - if ( m_pAdapter ) - { - m_pAdapter->release(); - m_pAdapter = nullptr; - } - } - - if ( pAdapter ) - { - ::osl::MutexGuard aGuard( m_rMutex ); - m_pAdapter = pAdapter; - m_pAdapter->acquire(); - } + ::osl::MutexGuard aGuard( m_rMutex ); + m_xAdapter = pAdapter; } OComponentAdapterBase::OComponentAdapterBase( const Reference< XComponent >& _rxComp ) diff --git a/extensions/source/bibliography/loadlisteneradapter.hxx b/extensions/source/bibliography/loadlisteneradapter.hxx index 47458a6..d61756c 100644 --- a/extensions/source/bibliography/loadlisteneradapter.hxx +++ b/extensions/source/bibliography/loadlisteneradapter.hxx @@ -24,6 +24,7 @@ #include <com/sun/star/lang/XComponent.hpp> #include <cppuhelper/implbase.hxx> #include <com/sun/star/form/XLoadable.hpp> +#include <rtl/ref.hxx> namespace bib @@ -37,12 +38,11 @@ namespace bib friend class OComponentAdapterBase; private: - OComponentAdapterBase* m_pAdapter; - ::osl::Mutex& m_rMutex; + rtl::Reference<OComponentAdapterBase> m_xAdapter; + ::osl::Mutex& m_rMutex; protected: explicit OComponentListener( ::osl::Mutex& _rMutex ) - :m_pAdapter( nullptr ) - ,m_rMutex( _rMutex ) + :m_rMutex( _rMutex ) { } commit 2bbf21aaded0c0623ee802e746dbf6b11d58d396 Author: Noel Grandin <[email protected]> Date: Fri Jan 20 13:37:37 2017 +0200 use rtl::Reference in DocumentHolder instead of manual acquire/release Change-Id: Id795dca5ff9e392fa2649f4721a73ce3ffd6de2c diff --git a/embeddedobj/source/general/docholder.cxx b/embeddedobj/source/general/docholder.cxx index d465c21..506ec44 100644 --- a/embeddedobj/source/general/docholder.cxx +++ b/embeddedobj/source/general/docholder.cxx @@ -149,7 +149,6 @@ static void InsertMenu_Impl( const uno::Reference< container::XIndexContainer >& DocumentHolder::DocumentHolder( const uno::Reference< uno::XComponentContext >& xContext, OCommonEmbeddedObject* pEmbObj ) : m_pEmbedObj( pEmbObj ), - m_pInterceptor( nullptr ), m_xContext( xContext ), m_bReadOnly( false ), m_bWaitForClose( false ), @@ -200,10 +199,10 @@ DocumentHolder::~DocumentHolder() } catch( const uno::Exception& ) {} } - if ( m_pInterceptor ) + if ( m_xInterceptor.is() ) { - m_pInterceptor->DisconnectDocHolder(); - m_pInterceptor->release(); + m_xInterceptor->DisconnectDocHolder(); + m_xInterceptor.clear(); } if ( !m_bDesktopTerminated ) @@ -837,17 +836,15 @@ uno::Reference< frame::XFrame > const & DocumentHolder::GetDocFrame() uno::Reference< frame::XDispatchProviderInterception > xInterception( m_xFrame, uno::UNO_QUERY ); if ( xInterception.is() ) { - if ( m_pInterceptor ) + if ( m_xInterceptor.is() ) { - m_pInterceptor->DisconnectDocHolder(); - m_pInterceptor->release(); - m_pInterceptor = nullptr; + m_xInterceptor->DisconnectDocHolder(); + m_xInterceptor.clear(); } - m_pInterceptor = new Interceptor( this ); - m_pInterceptor->acquire(); + m_xInterceptor = new Interceptor( this ); - xInterception->registerDispatchProviderInterceptor( m_pInterceptor ); + xInterception->registerDispatchProviderInterceptor( m_xInterceptor.get() ); // register interceptor from outside if ( m_xOutplaceInterceptor.is() ) diff --git a/embeddedobj/source/inc/docholder.hxx b/embeddedobj/source/inc/docholder.hxx index 7e8ca8f..048680c 100644 --- a/embeddedobj/source/inc/docholder.hxx +++ b/embeddedobj/source/inc/docholder.hxx @@ -36,6 +36,7 @@ #include <com/sun/star/frame/XLayoutManager.hpp> #include <com/sun/star/uno/XComponentContext.hpp> #include <cppuhelper/implbase.hxx> +#include <rtl/ref.hxx> class OCommonEmbeddedObject; class Interceptor; @@ -53,7 +54,7 @@ private: OCommonEmbeddedObject* m_pEmbedObj; - Interceptor* m_pInterceptor; + rtl::Reference<Interceptor> m_xInterceptor; css::uno::Reference< css::frame::XDispatchProviderInterceptor > m_xOutplaceInterceptor; css::uno::Reference< css::uno::XComponentContext > m_xContext; commit 4f5b22b93a53c52a46ebdd5ce479086f8df20e22 Author: Noel Grandin <[email protected]> Date: Fri Jan 20 13:35:32 2017 +0200 use rtl::Reference in OCommonEmbeddedObject instead of manual acquire/release Change-Id: Ie641f72687a05e1cd3cf697d551f9c6d21ac4487 diff --git a/embeddedobj/source/commonembedding/embedobj.cxx b/embeddedobj/source/commonembedding/embedobj.cxx index 5142871..881a75b0 100644 --- a/embeddedobj/source/commonembedding/embedobj.cxx +++ b/embeddedobj/source/commonembedding/embedobj.cxx @@ -83,7 +83,7 @@ sal_Int32 OCommonEmbeddedObject::ConvertVerbToState_Impl( sal_Int32 nVerb ) void OCommonEmbeddedObject::Deactivate() { - uno::Reference< util::XModifiable > xModif( m_pDocHolder->GetComponent(), uno::UNO_QUERY ); + uno::Reference< util::XModifiable > xModif( m_xDocHolder->GetComponent(), uno::UNO_QUERY ); // no need to lock for the initialization uno::Reference< embed::XEmbeddedClient > xClientSite = m_xClientSite; @@ -108,7 +108,7 @@ void OCommonEmbeddedObject::Deactivate() } } - m_pDocHolder->CloseFrame(); + m_xDocHolder->CloseFrame(); xClientSite->visibilityChanged( false ); } @@ -166,7 +166,7 @@ void OCommonEmbeddedObject::SwitchStateTo_Impl( sal_Int32 nNextState ) if ( m_bIsLink ) { - m_pDocHolder->SetComponent( LoadLink_Impl(), m_bReadOnly ); + m_xDocHolder->SetComponent( LoadLink_Impl(), m_bReadOnly ); } else { @@ -179,7 +179,7 @@ void OCommonEmbeddedObject::SwitchStateTo_Impl( sal_Int32 nNextState ) if ( !m_xObjectStorage.is() ) throw io::IOException(); //TODO: access denied - m_pDocHolder->SetComponent( LoadDocumentFromStorage_Impl(), m_bReadOnly ); + m_xDocHolder->SetComponent( LoadDocumentFromStorage_Impl(), m_bReadOnly ); } else { @@ -194,11 +194,11 @@ void OCommonEmbeddedObject::SwitchStateTo_Impl( sal_Int32 nNextState ) if ( xChild.is() ) xChild->setParent( m_xParent ); - m_pDocHolder->SetComponent( xDocument, m_bReadOnly ); + m_xDocHolder->SetComponent( xDocument, m_bReadOnly ); } } - if ( !m_pDocHolder->GetComponent().is() ) + if ( !m_xDocHolder->GetComponent().is() ) throw embed::UnreachableStateException(); //TODO: can't open document m_nObjectState = nNextState; @@ -213,11 +213,11 @@ void OCommonEmbeddedObject::SwitchStateTo_Impl( sal_Int32 nNextState ) { if ( nNextState == embed::EmbedStates::LOADED ) { - m_nClonedMapUnit = m_pDocHolder->GetMapUnit( embed::Aspects::MSOLE_CONTENT ); - m_bHasClonedSize = m_pDocHolder->GetExtent( embed::Aspects::MSOLE_CONTENT, &m_aClonedSize ); + m_nClonedMapUnit = m_xDocHolder->GetMapUnit( embed::Aspects::MSOLE_CONTENT ); + m_bHasClonedSize = m_xDocHolder->GetExtent( embed::Aspects::MSOLE_CONTENT, &m_aClonedSize ); // actually frame should not exist at this point - m_pDocHolder->CloseDocument( false, false ); + m_xDocHolder->CloseDocument( false, false ); m_nObjectState = nNextState; } @@ -250,7 +250,7 @@ void OCommonEmbeddedObject::SwitchStateTo_Impl( sal_Int32 nNextState ) // dispatch provider may not be provided uno::Reference< frame::XDispatchProvider > xContainerDP = xInplaceClient->getInplaceDispatchProvider(); - bool bOk = m_pDocHolder->ShowInplace( xClientWindowPeer, aRectangleToShow, xContainerDP ); + bool bOk = m_xDocHolder->ShowInplace( xClientWindowPeer, aRectangleToShow, xContainerDP ); m_nObjectState = nNextState; if ( !bOk ) { @@ -267,7 +267,7 @@ void OCommonEmbeddedObject::SwitchStateTo_Impl( sal_Int32 nNextState ) throw embed::WrongStateException(); //TODO: client site is not set! // create frame and load document in the frame - m_pDocHolder->Show(); + m_xDocHolder->Show(); m_xClientSite->visibilityChanged( true ); m_nObjectState = nNextState; @@ -324,13 +324,13 @@ void OCommonEmbeddedObject::SwitchStateTo_Impl( sal_Int32 nNextState ) // the container. Locking the LM will prevent flicker. xContainerLM->lock(); xInplaceClient->activatingUI(); - bool bOk = m_pDocHolder->ShowUI( xContainerLM, xContainerDP, aModuleName ); + bool bOk = m_xDocHolder->ShowUI( xContainerLM, xContainerDP, aModuleName ); xContainerLM->unlock(); if ( bOk ) { m_nObjectState = nNextState; - m_pDocHolder->ResizeHatchWindow(); + m_xDocHolder->ResizeHatchWindow(); } else { @@ -371,12 +371,12 @@ void OCommonEmbeddedObject::SwitchStateTo_Impl( sal_Int32 nNextState ) bool bOk = false; if ( xContainerLM.is() ) - bOk = m_pDocHolder->HideUI( xContainerLM ); + bOk = m_xDocHolder->HideUI( xContainerLM ); if ( bOk ) { m_nObjectState = nNextState; - m_pDocHolder->ResizeHatchWindow(); + m_xDocHolder->ResizeHatchWindow(); xInplaceClient->deactivatedUI(); } else @@ -449,7 +449,7 @@ void SAL_CALL OCommonEmbeddedObject::changeState( sal_Int32 nNewState ) { // if active object is activated again, bring its window to top if ( m_nObjectState == embed::EmbedStates::ACTIVE ) - m_pDocHolder->Show(); + m_xDocHolder->Show(); return; } @@ -681,7 +681,7 @@ void SAL_CALL OCommonEmbeddedObject::setParent( const css::uno::Reference< css:: m_xParent = xParent; if ( m_nObjectState != -1 && m_nObjectState != embed::EmbedStates::LOADED ) { - uno::Reference < container::XChild > xChild( m_pDocHolder->GetComponent(), uno::UNO_QUERY ); + uno::Reference < container::XChild > xChild( m_xDocHolder->GetComponent(), uno::UNO_QUERY ); if ( xChild.is() ) xChild->setParent( xParent ); } diff --git a/embeddedobj/source/commonembedding/inplaceobj.cxx b/embeddedobj/source/commonembedding/inplaceobj.cxx index a4e298a..1b61855 100644 --- a/embeddedobj/source/commonembedding/inplaceobj.cxx +++ b/embeddedobj/source/commonembedding/inplaceobj.cxx @@ -55,7 +55,7 @@ void SAL_CALL OCommonEmbeddedObject::setObjectRectangles( const awt::Rectangle& // the clip rectangle changes view only in case interception is also changed if ( !RectanglesEqual( m_aOwnRectangle, aPosRect ) || ( !RectanglesEqual( m_aClipRectangle, aPosRect ) && !RectanglesEqual( aOldRectToShow, aNewRectToShow ) ) ) - m_pDocHolder->PlaceFrame( aNewRectToShow ); + m_xDocHolder->PlaceFrame( aNewRectToShow ); m_aOwnRectangle = aPosRect; m_aClipRectangle = aClipRect; diff --git a/embeddedobj/source/commonembedding/miscobj.cxx b/embeddedobj/source/commonembedding/miscobj.cxx index fa020e9..eb29ac4 100644 --- a/embeddedobj/source/commonembedding/miscobj.cxx +++ b/embeddedobj/source/commonembedding/miscobj.cxx @@ -43,8 +43,7 @@ using namespace ::com::sun::star; OCommonEmbeddedObject::OCommonEmbeddedObject( const uno::Reference< uno::XComponentContext >& rxContext, const uno::Sequence< beans::NamedValue >& aObjProps ) -: m_pDocHolder( nullptr ) -, m_pInterfaceContainer( nullptr ) +: m_pInterfaceContainer( nullptr ) , m_bReadOnly( false ) , m_bDisposed( false ) , m_bClosed( false ) @@ -70,8 +69,7 @@ OCommonEmbeddedObject::OCommonEmbeddedObject( const uno::Sequence< beans::NamedValue >& aObjProps, const uno::Sequence< beans::PropertyValue >& aMediaDescr, const uno::Sequence< beans::PropertyValue >& aObjectDescr ) -: m_pDocHolder( nullptr ) -, m_pInterfaceContainer( nullptr ) +: m_pInterfaceContainer( nullptr ) , m_bReadOnly( false ) , m_bDisposed( false ) , m_bClosed( false ) @@ -99,8 +97,7 @@ void OCommonEmbeddedObject::CommonInit_Impl( const uno::Sequence< beans::NamedVa if ( !m_xContext.is() ) throw uno::RuntimeException(); - m_pDocHolder = new DocumentHolder( m_xContext, this ); - m_pDocHolder->acquire(); + m_xDocHolder = new DocumentHolder( m_xContext, this ); // parse configuration entries // TODO/LATER: in future UI names can be also provided here @@ -256,13 +253,13 @@ void OCommonEmbeddedObject::LinkInit_Impl( CommonInit_Impl( aObjectProps ); if ( xDispatchInterceptor.is() ) - m_pDocHolder->SetOutplaceDispatchInterceptor( xDispatchInterceptor ); + m_xDocHolder->SetOutplaceDispatchInterceptor( xDispatchInterceptor ); } OCommonEmbeddedObject::~OCommonEmbeddedObject() { - if ( m_pInterfaceContainer || m_pDocHolder ) + if ( m_pInterfaceContainer || m_xDocHolder.is() ) { m_refCount++; try { @@ -278,16 +275,15 @@ OCommonEmbeddedObject::~OCommonEmbeddedObject() } catch( const uno::Exception& ) {} try { - if ( m_pDocHolder ) + if ( m_xDocHolder.is() ) { - m_pDocHolder->CloseFrame(); + m_xDocHolder->CloseFrame(); try { - m_pDocHolder->CloseDocument( true, true ); + m_xDocHolder->CloseDocument( true, true ); } catch ( const uno::Exception& ) {} - m_pDocHolder->FreeOffice(); + m_xDocHolder->FreeOffice(); - m_pDocHolder->release(); - m_pDocHolder = nullptr; + m_xDocHolder.clear(); } } catch( const uno::Exception& ) {} } @@ -449,7 +445,7 @@ uno::Reference< util::XCloseable > SAL_CALL OCommonEmbeddedObject::getComponent( static_cast< ::cppu::OWeakObject* >(this) ); } - return uno::Reference< util::XCloseable >( m_pDocHolder->GetComponent(), uno::UNO_QUERY ); + return uno::Reference< util::XCloseable >( m_xDocHolder->GetComponent(), uno::UNO_QUERY ); } @@ -537,29 +533,27 @@ void SAL_CALL OCommonEmbeddedObject::close( sal_Bool bDeliverOwnership ) // the exception will be thrown otherwise in addition to exception the object must register itself // as termination listener and listen for document events - if ( m_pDocHolder ) + if ( m_xDocHolder.is() ) { - m_pDocHolder->CloseFrame(); + m_xDocHolder->CloseFrame(); try { - m_pDocHolder->CloseDocument( bDeliverOwnership, bDeliverOwnership ); + m_xDocHolder->CloseDocument( bDeliverOwnership, bDeliverOwnership ); } catch( const uno::Exception& ) { if ( bDeliverOwnership ) { - m_pDocHolder->release(); - m_pDocHolder = nullptr; + m_xDocHolder.clear(); m_bClosed = true; } throw; } - m_pDocHolder->FreeOffice(); + m_xDocHolder->FreeOffice(); - m_pDocHolder->release(); - m_pDocHolder = nullptr; + m_xDocHolder.clear(); } // TODO: for now the storage will be disposed by the object, but after the document diff --git a/embeddedobj/source/commonembedding/persistence.cxx b/embeddedobj/source/commonembedding/persistence.cxx index 036dc02..d7dfd4e 100644 --- a/embeddedobj/source/commonembedding/persistence.cxx +++ b/embeddedobj/source/commonembedding/persistence.cxx @@ -259,7 +259,7 @@ void OCommonEmbeddedObject::SwitchOwnPersistence( const uno::Reference< embed::X // the linked document should not be switched if ( !m_bIsLink ) { - uno::Reference< document::XStorageBasedDocument > xDoc( m_pDocHolder->GetComponent(), uno::UNO_QUERY ); + uno::Reference< document::XStorageBasedDocument > xDoc( m_xDocHolder->GetComponent(), uno::UNO_QUERY ); if ( xDoc.is() ) SwitchDocToStorage_Impl( xDoc, m_xObjectStorage ); } @@ -580,8 +580,8 @@ uno::Reference< io::XInputStream > OCommonEmbeddedObject::StoreDocumentToTempStr uno::Reference< frame::XStorable > xStorable; { osl::MutexGuard aGuard( m_aMutex ); - if ( m_pDocHolder ) - xStorable.set( m_pDocHolder->GetComponent(), uno::UNO_QUERY ); + if ( m_xDocHolder.is() ) + xStorable.set( m_xDocHolder->GetComponent(), uno::UNO_QUERY ); } if( !xStorable.is() ) @@ -625,7 +625,7 @@ void OCommonEmbeddedObject::SaveObject_Impl() { // check whether the component is modified, // if not there is no need for storing - uno::Reference< util::XModifiable > xModifiable( m_pDocHolder->GetComponent(), uno::UNO_QUERY ); + uno::Reference< util::XModifiable > xModifiable( m_xDocHolder->GetComponent(), uno::UNO_QUERY ); if ( xModifiable.is() && !xModifiable->isModified() ) return; } @@ -760,8 +760,8 @@ void OCommonEmbeddedObject::StoreDocToStorage_Impl( uno::Reference< document::XStorageBasedDocument > xDoc; { osl::MutexGuard aGuard( m_aMutex ); - if ( m_pDocHolder ) - xDoc.set( m_pDocHolder->GetComponent(), uno::UNO_QUERY ); + if ( m_xDocHolder.is() ) + xDoc.set( m_xDocHolder->GetComponent(), uno::UNO_QUERY ); } OUString aBaseURL = GetBaseURLFrom_Impl(rMediaArgs, rObjArgs); @@ -876,7 +876,7 @@ uno::Reference< util::XCloseable > OCommonEmbeddedObject::CreateTempDocFromLink_ SAL_WARN( "embeddedobj.common", "Can not retrieve storage media type!" ); } - if ( m_pDocHolder->GetComponent().is() ) + if ( m_xDocHolder->GetComponent().is() ) { aTempMediaDescr.realloc( 4 ); @@ -1020,7 +1020,7 @@ void SAL_CALL OCommonEmbeddedObject::setPersistentEntry( { uno::Reference< frame::XDispatchProviderInterceptor > xDispatchInterceptor; if ( lObjArgs[nObjInd].Value >>= xDispatchInterceptor ) - m_pDocHolder->SetOutplaceDispatchInterceptor( xDispatchInterceptor ); + m_xDocHolder->SetOutplaceDispatchInterceptor( xDispatchInterceptor ); } else if ( lObjArgs[nObjInd].Name == "DefaultParentBaseURL" ) { @@ -1053,7 +1053,7 @@ void SAL_CALL OCommonEmbeddedObject::setPersistentEntry( uno::Sequence< beans::NamedValue > aOutFramePropsTyped; if ( lObjArgs[nObjInd].Value >>= aOutFrameProps ) { - m_pDocHolder->SetOutplaceFrameProperties( aOutFrameProps ); + m_xDocHolder->SetOutplaceFrameProperties( aOutFrameProps ); } else if ( lObjArgs[nObjInd].Value >>= aOutFramePropsTyped ) { @@ -1066,7 +1066,7 @@ void SAL_CALL OCommonEmbeddedObject::setPersistentEntry( { *pProp <<= *pTypedProp; } - m_pDocHolder->SetOutplaceFrameProperties( aOutFrameProps ); + m_xDocHolder->SetOutplaceFrameProperties( aOutFrameProps ); } else SAL_WARN( "embeddedobj.common", "OCommonEmbeddedObject::setPersistentEntry: illegal type for argument 'OutplaceFrameProperties'!" ); @@ -1102,8 +1102,8 @@ void SAL_CALL OCommonEmbeddedObject::setPersistentEntry( } else { - m_pDocHolder->SetComponent( InitNewDocument_Impl(), m_bReadOnly ); - if ( !m_pDocHolder->GetComponent().is() ) + m_xDocHolder->SetComponent( InitNewDocument_Impl(), m_bReadOnly ); + if ( !m_xDocHolder->GetComponent().is() ) throw io::IOException(); // TODO: can not create document m_nObjectState = embed::EmbedStates::RUNNING; @@ -1126,16 +1126,16 @@ void SAL_CALL OCommonEmbeddedObject::setPersistentEntry( TransferMediaType( m_xRecoveryStorage, m_xObjectStorage ); // TODO: - m_pDocHolder->SetComponent( InitNewDocument_Impl(), m_bReadOnly ); + m_xDocHolder->SetComponent( InitNewDocument_Impl(), m_bReadOnly ); - if ( !m_pDocHolder->GetComponent().is() ) + if ( !m_xDocHolder->GetComponent().is() ) throw io::IOException(); // TODO: can not create document m_nObjectState = embed::EmbedStates::RUNNING; } else if ( nEntryConnectionMode == embed::EntryInitModes::MEDIA_DESCRIPTOR_INIT ) { - m_pDocHolder->SetComponent( CreateDocFromMediaDescr_Impl( lArguments ), m_bReadOnly ); + m_xDocHolder->SetComponent( CreateDocFromMediaDescr_Impl( lArguments ), m_bReadOnly ); m_nObjectState = embed::EmbedStates::RUNNING; } //else if ( nEntryConnectionMode == embed::EntryInitModes::TRANSFERABLE_INIT ) @@ -1472,7 +1472,7 @@ void SAL_CALL OCommonEmbeddedObject::saveCompleted( sal_Bool bUseNew ) SwitchOwnPersistence( m_xNewParentStorage, m_xNewObjectStorage, m_aNewEntryName ); m_aDocMediaDescriptor = m_aNewDocMediaDescriptor; - uno::Reference< util::XModifiable > xModif( m_pDocHolder->GetComponent(), uno::UNO_QUERY ); + uno::Reference< util::XModifiable > xModif( m_xDocHolder->GetComponent(), uno::UNO_QUERY ); if ( xModif.is() ) xModif->setModified( false ); @@ -1588,14 +1588,14 @@ void SAL_CALL OCommonEmbeddedObject::storeOwn() PostEvent_Impl( "OnSave" ); - SAL_WARN_IF( !m_pDocHolder->GetComponent().is(), "embeddedobj.common", "If an object is activated or in running state it must have a document!" ); - if ( !m_pDocHolder->GetComponent().is() ) + SAL_WARN_IF( !m_xDocHolder->GetComponent().is(), "embeddedobj.common", "If an object is activated or in running state it must have a document!" ); + if ( !m_xDocHolder->GetComponent().is() ) throw uno::RuntimeException(); if ( m_bIsLink ) { // TODO: just store the document to its location - uno::Reference< frame::XStorable > xStorable( m_pDocHolder->GetComponent(), uno::UNO_QUERY ); + uno::Reference< frame::XStorable > xStorable( m_xDocHolder->GetComponent(), uno::UNO_QUERY ); if ( !xStorable.is() ) throw uno::RuntimeException(); // TODO @@ -1641,7 +1641,7 @@ void SAL_CALL OCommonEmbeddedObject::storeOwn() aGuard.reset(); } - uno::Reference< util::XModifiable > xModif( m_pDocHolder->GetComponent(), uno::UNO_QUERY ); + uno::Reference< util::XModifiable > xModif( m_xDocHolder->GetComponent(), uno::UNO_QUERY ); if ( xModif.is() ) xModif->setModified( false ); @@ -1749,8 +1749,7 @@ void SAL_CALL OCommonEmbeddedObject::reload( uno::Sequence< beans::NamedValue > aObject = aHelper.GetObjectPropsByFilter( m_aLinkFilterName ); // TODO/LATER: probably the document holder could be cleaned explicitly as in the destructor - m_pDocHolder->release(); - m_pDocHolder = nullptr; + m_xDocHolder.clear(); LinkInit_Impl( aObject, lArguments, lObjArgs ); } @@ -1764,7 +1763,7 @@ void SAL_CALL OCommonEmbeddedObject::reload( { uno::Reference< frame::XDispatchProviderInterceptor > xDispatchInterceptor; if ( lObjArgs[nObjInd].Value >>= xDispatchInterceptor ) - m_pDocHolder->SetOutplaceDispatchInterceptor( xDispatchInterceptor ); + m_xDocHolder->SetOutplaceDispatchInterceptor( xDispatchInterceptor ); break; } @@ -1870,7 +1869,7 @@ void SAL_CALL OCommonEmbeddedObject::breakLink( const uno::Reference< embed::XSt // TODO/LATER: handle the case when temp doc can not be created // the document is a new embedded object so it must be marked as modified uno::Reference< util::XCloseable > xDocument = CreateTempDocFromLink_Impl(); - uno::Reference< util::XModifiable > xModif( m_pDocHolder->GetComponent(), uno::UNO_QUERY ); + uno::Reference< util::XModifiable > xModif( m_xDocHolder->GetComponent(), uno::UNO_QUERY ); if ( !xModif.is() ) throw uno::RuntimeException(); try @@ -1880,8 +1879,8 @@ void SAL_CALL OCommonEmbeddedObject::breakLink( const uno::Reference< embed::XSt catch( const uno::Exception& ) {} - m_pDocHolder->SetComponent( xDocument, m_bReadOnly ); - SAL_WARN_IF( !m_pDocHolder->GetComponent().is(), "embeddedobj.common", "If document can't be created, an exception must be thrown!" ); + m_xDocHolder->SetComponent( xDocument, m_bReadOnly ); + SAL_WARN_IF( !m_xDocHolder->GetComponent().is(), "embeddedobj.common", "If document can't be created, an exception must be thrown!" ); if ( m_nObjectState == embed::EmbedStates::LOADED ) { @@ -1890,7 +1889,7 @@ void SAL_CALL OCommonEmbeddedObject::breakLink( const uno::Reference< embed::XSt StateChangeNotification_Impl( false, embed::EmbedStates::LOADED, m_nObjectState, aGuard ); } else if ( m_nObjectState == embed::EmbedStates::ACTIVE ) - m_pDocHolder->Show(); + m_xDocHolder->Show(); m_bIsLink = false; m_aLinkFilterName.clear(); diff --git a/embeddedobj/source/commonembedding/specialobject.cxx b/embeddedobj/source/commonembedding/specialobject.cxx index e1c73f8..5de49e7 100644 --- a/embeddedobj/source/commonembedding/specialobject.cxx +++ b/embeddedobj/source/commonembedding/specialobject.cxx @@ -187,7 +187,7 @@ void SAL_CALL OSpecialEmbeddedObject::doVerb( sal_Int32 nVerbID ) if ( nVerbID == -7 ) { - uno::Reference < ui::dialogs::XExecutableDialog > xDlg( m_pDocHolder->GetComponent(), uno::UNO_QUERY ); + uno::Reference < ui::dialogs::XExecutableDialog > xDlg( m_xDocHolder->GetComponent(), uno::UNO_QUERY ); if ( xDlg.is() ) xDlg->execute(); else diff --git a/embeddedobj/source/commonembedding/visobj.cxx b/embeddedobj/source/commonembedding/visobj.cxx index 87a7f39..98ebda3 100644 --- a/embeddedobj/source/commonembedding/visobj.cxx +++ b/embeddedobj/source/commonembedding/visobj.cxx @@ -60,7 +60,7 @@ void SAL_CALL OCommonEmbeddedObject::setVisualAreaSize( sal_Int64 nAspect, const bBackToLoaded = m_bIsLink; } - bool bSuccess = m_pDocHolder->SetExtent( nAspect, aSize ); + bool bSuccess = m_xDocHolder->SetExtent( nAspect, aSize ); if ( bBackToLoaded ) changeState( embed::EmbedStates::LOADED ); @@ -98,7 +98,7 @@ awt::Size SAL_CALL OCommonEmbeddedObject::getVisualAreaSize( sal_Int64 nAspect ) } awt::Size aResult; - bool bSuccess = m_pDocHolder->GetExtent( nAspect, &aResult ); + bool bSuccess = m_xDocHolder->GetExtent( nAspect, &aResult ); if ( bBackToLoaded ) changeState( embed::EmbedStates::LOADED ); @@ -139,7 +139,7 @@ sal_Int32 SAL_CALL OCommonEmbeddedObject::getMapUnit( sal_Int64 nAspect ) bBackToLoaded = m_bIsLink; } - sal_Int32 nResult = m_pDocHolder->GetMapUnit( nAspect ); + sal_Int32 nResult = m_xDocHolder->GetMapUnit( nAspect ); if ( bBackToLoaded ) changeState( embed::EmbedStates::LOADED ); @@ -185,19 +185,19 @@ embed::VisualRepresentation SAL_CALL OCommonEmbeddedObject::getPreferredVisualRe bBackToLoaded = m_bIsLink; } - SAL_WARN_IF( !m_pDocHolder->GetComponent().is(), "embeddedobj.common", "Running or Active object has no component!" ); + SAL_WARN_IF( !m_xDocHolder->GetComponent().is(), "embeddedobj.common", "Running or Active object has no component!" ); // TODO: return for the aspect of the document embed::VisualRepresentation aVisualRepresentation; - uno::Reference< embed::XVisualObject > xVisualObject( m_pDocHolder->GetComponent(), uno::UNO_QUERY ); + uno::Reference< embed::XVisualObject > xVisualObject( m_xDocHolder->GetComponent(), uno::UNO_QUERY ); if( xVisualObject.is()) { aVisualRepresentation = xVisualObject->getPreferredVisualRepresentation( nAspect ); } else { - uno::Reference< datatransfer::XTransferable > xTransferable( m_pDocHolder->GetComponent(), uno::UNO_QUERY ); + uno::Reference< datatransfer::XTransferable > xTransferable( m_xDocHolder->GetComponent(), uno::UNO_QUERY ); if (!xTransferable.is() ) throw uno::RuntimeException(); diff --git a/embeddedobj/source/inc/commonembobj.hxx b/embeddedobj/source/inc/commonembobj.hxx index 174e110..3440a61 100644 --- a/embeddedobj/source/inc/commonembobj.hxx +++ b/embeddedobj/source/inc/commonembobj.hxx @@ -39,6 +39,7 @@ #include <com/sun/star/util/XCloseable.hpp> #include <com/sun/star/chart2/XDefaultSizeTransmitter.hpp> #include <cppuhelper/weak.hxx> +#include <rtl/ref.hxx> namespace com { namespace sun { namespace star { namespace embed { @@ -82,7 +83,7 @@ class OCommonEmbeddedObject : public css::embed::XEmbeddedObject protected: ::osl::Mutex m_aMutex; - DocumentHolder* m_pDocHolder; + rtl::Reference<DocumentHolder> m_xDocHolder; ::cppu::OMultiTypeInterfaceContainerHelper* m_pInterfaceContainer; commit db0f4ecd009f34e431b895c874c34d75186b3272 Author: Noel Grandin <[email protected]> Date: Fri Jan 20 13:25:02 2017 +0200 use rtl::Reference in SbaXGridControl instead of manual acquire/release Change-Id: Ie103377d89419648d5f1d786933030b6f6166515 diff --git a/dbaccess/source/ui/browser/sbagrid.cxx b/dbaccess/source/ui/browser/sbagrid.cxx index 606fc7d..ed16039 100644 --- a/dbaccess/source/ui/browser/sbagrid.cxx +++ b/dbaccess/source/ui/browser/sbagrid.cxx @@ -207,8 +207,8 @@ void SAL_CALL SbaXGridControl::createPeer(const Reference< css::awt::XToolkit > aIter != m_aStatusMultiplexer.end(); ++aIter) { - if ((*aIter).second && (*aIter).second->getLength()) - xDisp->addStatusListener((*aIter).second, (*aIter).first); + if ((*aIter).second.is() && (*aIter).second->getLength()) + xDisp->addStatusListener((*aIter).second.get(), (*aIter).first); } } @@ -224,24 +224,23 @@ void SAL_CALL SbaXGridControl::addStatusListener( const Reference< XStatusListen ::osl::MutexGuard aGuard( GetMutex() ); if ( _rxListener.is() ) { - SbaXStatusMultiplexer*& pMultiplexer = m_aStatusMultiplexer[ _rURL ]; - if ( !pMultiplexer ) + rtl::Reference<SbaXStatusMultiplexer>& xMultiplexer = m_aStatusMultiplexer[ _rURL ]; + if ( !xMultiplexer.is() ) { - pMultiplexer = new SbaXStatusMultiplexer( *this, GetMutex() ); - pMultiplexer->acquire(); + xMultiplexer = new SbaXStatusMultiplexer( *this, GetMutex() ); } - pMultiplexer->addInterface( _rxListener ); + xMultiplexer->addInterface( _rxListener ); if ( getPeer().is() ) { - if ( 1 == pMultiplexer->getLength() ) + if ( 1 == xMultiplexer->getLength() ) { // the first external listener for this URL Reference< XDispatch > xDisp( getPeer(), UNO_QUERY ); - xDisp->addStatusListener( pMultiplexer, _rURL ); + xDisp->addStatusListener( xMultiplexer.get(), _rURL ); } else { // already have other listeners for this URL - _rxListener->statusChanged( pMultiplexer->getLastEvent() ); + _rxListener->statusChanged( xMultiplexer->getLastEvent() ); } } } @@ -251,19 +250,18 @@ void SAL_CALL SbaXGridControl::removeStatusListener(const Reference< css::frame: { ::osl::MutexGuard aGuard( GetMutex() ); - SbaXStatusMultiplexer*& pMultiplexer = m_aStatusMultiplexer[_rURL]; - if (!pMultiplexer) + rtl::Reference<SbaXStatusMultiplexer>& xMultiplexer = m_aStatusMultiplexer[_rURL]; + if (!xMultiplexer.is()) { - pMultiplexer = new SbaXStatusMultiplexer(*this,GetMutex()); - pMultiplexer->acquire(); + xMultiplexer = new SbaXStatusMultiplexer(*this,GetMutex()); } - if (getPeer().is() && pMultiplexer->getLength() == 1) + if (getPeer().is() && xMultiplexer->getLength() == 1) { Reference< css::frame::XDispatch > xDisp(getPeer(), UNO_QUERY); - xDisp->removeStatusListener(pMultiplexer, _rURL); + xDisp->removeStatusListener(xMultiplexer.get(), _rURL); } - pMultiplexer->removeInterface( _rxListener ); + xMultiplexer->removeInterface( _rxListener ); } void SAL_CALL SbaXGridControl::dispose() throw( RuntimeException, std::exception ) @@ -277,11 +275,10 @@ void SAL_CALL SbaXGridControl::dispose() throw( RuntimeException, std::exception aIter != m_aStatusMultiplexer.end(); ++aIter) { - if ((*aIter).second) + if ((*aIter).second.is()) { (*aIter).second->disposeAndClear(aEvt); - (*aIter).second->release(); - (*aIter).second = nullptr; + (*aIter).second.clear(); } } StatusMultiplexerArray().swap(m_aStatusMultiplexer); diff --git a/dbaccess/source/ui/inc/sbagrid.hxx b/dbaccess/source/ui/inc/sbagrid.hxx index 550c3f3..e9f5c22 100644 --- a/dbaccess/source/ui/inc/sbagrid.hxx +++ b/dbaccess/source/ui/inc/sbagrid.hxx @@ -30,6 +30,7 @@ #include <comphelper/uno3.hxx> #include "sbamultiplex.hxx" #include <svx/dataaccessdescriptor.hxx> +#include <rtl/ref.hxx> #include <map> #include <queue> @@ -53,7 +54,7 @@ namespace dbaui :public FmXGridControl ,public css::frame::XDispatch { - typedef std::map<css::util::URL, SbaXStatusMultiplexer*, SbaURLCompare> StatusMultiplexerArray; + typedef std::map<css::util::URL, rtl::Reference<SbaXStatusMultiplexer>, SbaURLCompare> StatusMultiplexerArray; StatusMultiplexerArray m_aStatusMultiplexer; public: commit b395d9fd82cbc551d561c7a7ffe1751f5a35e339 Author: Noel Grandin <[email protected]> Date: Fri Jan 20 13:18:44 2017 +0200 use rtl::Reference in OResultSet instead of manual acquire/release Change-Id: I8baa2e7ac64445ea69d4b62566a89b6e42307e51 diff --git a/connectivity/source/drivers/mork/MResultSet.cxx b/connectivity/source/drivers/mork/MResultSet.cxx index 50e5b47..7ce0643 100644 --- a/connectivity/source/drivers/mork/MResultSet.cxx +++ b/connectivity/source/drivers/mork/MResultSet.cxx @@ -78,7 +78,6 @@ OResultSet::OResultSet(OCommonStatement* pStmt, const std::shared_ptr< connectiv ,m_pSQLIterator( _pSQLIterator ) ,m_pParseTree( _pSQLIterator->getParseTree() ) ,m_aQueryHelper(pStmt->getOwnConnection()->getColumnAlias()) - ,m_pTable(nullptr) ,m_CurrentRowCount(0) ,m_nParamIndex(0) ,m_bIsAlwaysFalseQuery(false) @@ -106,11 +105,7 @@ void OResultSet::disposing() m_xColumns = nullptr; m_xParamColumns = nullptr; m_pKeySet = nullptr; - if(m_pTable) - { - m_pTable->release(); - m_pTable = nullptr; - } + m_xTable.clear(); } Any SAL_CALL OResultSet::queryInterface( const Type & rType ) throw(RuntimeException, std::exception) @@ -133,7 +128,7 @@ Any SAL_CALL OResultSet::queryInterface( const Type & rType ) throw(RuntimeExcep void OResultSet::methodEntry() { checkDisposed(OResultSet_BASE::rBHelper.bDisposed); - if ( !m_pTable ) + if ( !m_xTable.is() ) { OSL_FAIL( "OResultSet::methodEntry: looks like we're disposed, but how is this possible?" ); throw DisposedException( OUString(), *this ); @@ -244,7 +239,7 @@ Reference< XResultSetMetaData > SAL_CALL OResultSet::getMetaData( ) throw(SQLEx if(!m_xMetaData.is()) m_xMetaData = new OResultSetMetaData( - m_pSQLIterator->getSelectColumns(), m_pSQLIterator->getTables().begin()->first ,m_pTable,determineReadOnly()); + m_pSQLIterator->getSelectColumns(), m_pSQLIterator->getTables().begin()->first, m_xTable.get(), determineReadOnly()); return m_xMetaData; } @@ -1001,7 +996,7 @@ void OResultSet::fillRowData() return; } - OUString aStr( m_pTable->getName() ); + OUString aStr( m_xTable->getName() ); m_aQueryHelper.setAddressbook( aStr ); sal_Int32 rv = m_aQueryHelper.executeQuery(pConnection, queryExpression); @@ -1068,15 +1063,14 @@ void SAL_CALL OResultSet::executeQuery() throw(css::sdbc::SQLException, { ResultSetEntryGuard aGuard( *this ); - OSL_ENSURE( m_pTable, "Need a Table object"); - if(!m_pTable) + OSL_ENSURE( m_xTable.is(), "Need a Table object"); + if(!m_xTable.is()) { const OSQLTables& rTabs = m_pSQLIterator->getTables(); if (rTabs.empty() || !rTabs.begin()->second.is()) m_pStatement->getOwnConnection()->throwSQLException( STR_QUERY_TOO_COMPLEX, *this ); - m_pTable = static_cast< OTable* > ((rTabs.begin()->second).get()); - + m_xTable = static_cast< OTable* > ((rTabs.begin()->second).get()); } m_nRowPos = 0; @@ -1752,9 +1746,8 @@ bool OResultSet::determineReadOnly() void OResultSet::setTable(OTable* _rTable) { - m_pTable = _rTable; - m_pTable->acquire(); - m_xTableColumns = m_pTable->getColumns(); + m_xTable = _rTable; + m_xTableColumns = m_xTable->getColumns(); if(m_xTableColumns.is()) m_aColumnNames = m_xTableColumns->getElementNames(); } diff --git a/connectivity/source/drivers/mork/MResultSet.hxx b/connectivity/source/drivers/mork/MResultSet.hxx index a05b1b6..081352a 100644 --- a/connectivity/source/drivers/mork/MResultSet.hxx +++ b/connectivity/source/drivers/mork/MResultSet.hxx @@ -34,6 +34,7 @@ #include <cppuhelper/compbase.hxx> #include <comphelper/proparrhlp.hxx> #include <tools/gen.hxx> +#include <rtl/ref.hxx> #include "MStatement.hxx" #include "MQueryHelper.hxx" #include <connectivity/CommonTools.hxx> @@ -215,7 +216,7 @@ namespace connectivity protected: //MQuery m_aQuery; MQueryHelper m_aQueryHelper; - OTable* m_pTable; + rtl::Reference<OTable> m_xTable; sal_Int32 m_CurrentRowCount; css::uno::Reference< css::container::XNameAccess > m_xTableColumns; commit 017911facd7bf66bd8743e1d3357c2808dcd1bba Author: Noel Grandin <[email protected]> Date: Fri Jan 20 13:11:21 2017 +0200 use rtl::Reference in OPropertyChangeListener instead of manual acquire/release Change-Id: Ie80253b5a59a3e3fcd52f98d9c26bcde42fe985a diff --git a/comphelper/source/property/propmultiplex.cxx b/comphelper/source/property/propmultiplex.cxx index 4a50e8c..e10d85a 100644 --- a/comphelper/source/property/propmultiplex.cxx +++ b/comphelper/source/property/propmultiplex.cxx @@ -31,8 +31,8 @@ using namespace ::com::sun::star::beans; OPropertyChangeListener::~OPropertyChangeListener() { - if (m_pAdapter) - m_pAdapter->dispose(); + if (m_xAdapter.is()) + m_xAdapter->dispose(); } @@ -45,29 +45,18 @@ void OPropertyChangeListener::_disposing(const EventObject&) void OPropertyChangeListener::disposeAdapter() { - if ( m_pAdapter ) - m_pAdapter->dispose(); + if ( m_xAdapter.is() ) + m_xAdapter->dispose(); // will automatically set a new adapter - OSL_ENSURE( !m_pAdapter, "OPropertyChangeListener::disposeAdapter: what did dispose do?" ); + OSL_ENSURE( !m_xAdapter.is(), "OPropertyChangeListener::disposeAdapter: what did dispose do?" ); } void OPropertyChangeListener::setAdapter(OPropertyChangeMultiplexer* pAdapter) { - if (m_pAdapter) - { - ::osl::MutexGuard aGuard(m_rMutex); - m_pAdapter->release(); - m_pAdapter = nullptr; - } - - if (pAdapter) - { - ::osl::MutexGuard aGuard(m_rMutex); - m_pAdapter = pAdapter; - m_pAdapter->acquire(); - } + ::osl::MutexGuard aGuard(m_rMutex); + m_xAdapter = pAdapter; } OPropertyChangeMultiplexer::OPropertyChangeMultiplexer(OPropertyChangeListener* _pListener, const Reference< XPropertySet>& _rxSet, bool _bAutoReleaseSet) diff --git a/include/comphelper/propmultiplex.hxx b/include/comphelper/propmultiplex.hxx index 628a809..94edcda 100644 --- a/include/comphelper/propmultiplex.hxx +++ b/include/comphelper/propmultiplex.hxx @@ -23,6 +23,7 @@ #include <comphelper/propstate.hxx> #include <cppuhelper/implbase.hxx> #include <comphelper/comphelperdllapi.h> +#include <rtl/ref.hxx> //= property helper classes @@ -42,12 +43,12 @@ namespace comphelper { friend class OPropertyChangeMultiplexer; - OPropertyChangeMultiplexer* m_pAdapter; + rtl::Reference<OPropertyChangeMultiplexer> m_xAdapter; ::osl::Mutex& m_rMutex; public: OPropertyChangeListener(::osl::Mutex& _rMutex) - : m_pAdapter(nullptr), m_rMutex(_rMutex) { } + : m_rMutex(_rMutex) { } virtual ~OPropertyChangeListener(); /// @throws css::uno::RuntimeException commit 45e591e237ef294ffd1a0f4a51122a748fd1460a Author: Noel Grandin <[email protected]> Date: Fri Jan 20 13:08:37 2017 +0200 use rtl:Reference in SmartContent instead of storing both a raw pointer and an uno::Reference Change-Id: Ia7a177ed9adcd9d413c86490b57036b0bd80f76d ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
