reportdesign/source/ui/inc/ReportController.hxx | 6 - reportdesign/source/ui/report/ReportController.cxx | 18 ++--- sc/inc/dptabsrc.hxx | 2 sc/inc/fmtuno.hxx | 2 sc/inc/notesuno.hxx | 3 sc/source/core/data/dptabsrc.cxx | 17 +--- sc/source/filter/xml/XMLTrackedChangesContext.cxx | 20 ++--- sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx | 38 +++-------- sc/source/ui/inc/AccessibleDocumentPagePreview.hxx | 4 - sc/source/ui/unoobj/fmtuno.cxx | 33 +++------ sc/source/ui/unoobj/notesuno.cxx | 11 --- 11 files changed, 55 insertions(+), 99 deletions(-)
New commits: commit 5dd00fedb49f86564f93f07f89faabcb6fad87f6 Author: Noel Grandin <n...@peralex.com> Date: Tue Jun 7 11:20:50 2016 +0200 remove some manual refcounting in reportdesign Change-Id: I660b94acaf07f7ff79b787a6e7bbbcbdbeae0ac0 Reviewed-on: https://gerrit.libreoffice.org/26009 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Noel Grandin <noelgran...@gmail.com> diff --git a/reportdesign/source/ui/inc/ReportController.hxx b/reportdesign/source/ui/inc/ReportController.hxx index fc8dcd9..4082efb9 100644 --- a/reportdesign/source/ui/inc/ReportController.hxx +++ b/reportdesign/source/ui/inc/ReportController.hxx @@ -90,11 +90,11 @@ namespace rptui css::uno::Sequence< css::beans::PropertyValue> m_aCollapsedSections; TransferableDataHelper m_aSystemClipboard; // content of the clipboard - TransferableClipboardListener* - m_pClipbordNotifier; /// notifier for changes in the clipboard + rtl::Reference<TransferableClipboardListener> + m_pClipboardNotifier; /// notifier for changes in the clipboard VclPtr<OGroupsSortingDialog> m_pGroupsFloater; - OXReportControllerObserver* m_pReportControllerObserver; + rtl::Reference<OXReportControllerObserver> m_pReportControllerObserver; ODesignView* getDesignView() const { return static_cast< ODesignView* >( getView() ); } diff --git a/reportdesign/source/ui/report/ReportController.cxx b/reportdesign/source/ui/report/ReportController.cxx index ef85318..63bd2b5 100644 --- a/reportdesign/source/ui/report/ReportController.cxx +++ b/reportdesign/source/ui/report/ReportController.cxx @@ -276,7 +276,6 @@ OReportController::OReportController(Reference< XComponentContext > const & xCon :OReportController_BASE(xContext) ,OPropertyStateContainer(OGenericUnoController_Base::rBHelper) ,m_aSelectionListeners( getMutex() ) - ,m_pClipbordNotifier(nullptr) ,m_pGroupsFloater(nullptr) ,m_sMode("normal") ,m_nSplitPos(-1) @@ -297,7 +296,6 @@ OReportController::OReportController(Reference< XComponentContext > const & xCon { // new Observer m_pReportControllerObserver = new OXReportControllerObserver(*this); - m_pReportControllerObserver->acquire(); registerProperty("ZoomValue", PROPERTY_ID_ZOOMVALUE, beans::PropertyAttribute::BOUND | beans::PropertyAttribute::TRANSIENT, &m_nZoomValue, ::cppu::UnoType<sal_Int16>::get()); @@ -314,12 +312,11 @@ IMPLEMENT_FORWARD_XINTERFACE2(OReportController,OReportController_BASE,OReportCo void OReportController::disposing() { - if ( m_pClipbordNotifier ) + if ( m_pClipboardNotifier.is() ) { - m_pClipbordNotifier->ClearCallbackLink(); - m_pClipbordNotifier->AddRemoveListener( getView(), false ); - m_pClipbordNotifier->release(); - m_pClipbordNotifier = nullptr; + m_pClipboardNotifier->ClearCallbackLink(); + m_pClipboardNotifier->AddRemoveListener( getView(), false ); + m_pClipboardNotifier.clear(); } if ( m_pGroupsFloater ) { @@ -356,7 +353,7 @@ void OReportController::disposing() if ( m_aReportModel ) listen(false); m_pReportControllerObserver->Clear(); - m_pReportControllerObserver->release(); + m_pReportControllerObserver.clear(); } catch(const uno::Exception&) { @@ -1768,9 +1765,8 @@ bool OReportController::Construct(vcl::Window* pParent) // now that we have a view we can create the clipboard listener m_aSystemClipboard = TransferableDataHelper::CreateFromSystemClipboard( getView() ); m_aSystemClipboard.StartClipboardListening( ); - m_pClipbordNotifier = new TransferableClipboardListener( LINK( this, OReportController, OnClipboardChanged ) ); - m_pClipbordNotifier->acquire(); - m_pClipbordNotifier->AddRemoveListener( getView(), true ); + m_pClipboardNotifier = new TransferableClipboardListener( LINK( this, OReportController, OnClipboardChanged ) ); + m_pClipboardNotifier->AddRemoveListener( getView(), true ); OReportController_BASE::Construct(pParent); return true; commit e626ebf50884520b38137a52a6ffc654c377956d Author: Noel Grandin <n...@peralex.com> Date: Tue Jun 7 09:03:53 2016 +0200 remove some manual refcounting in sc Change-Id: Ie13b28ffaf861dc85063e5a4b23fef8c929033d9 Reviewed-on: https://gerrit.libreoffice.org/26006 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Noel Grandin <noelgran...@gmail.com> diff --git a/sc/inc/dptabsrc.hxx b/sc/inc/dptabsrc.hxx index 03039df..cbbd28f 100644 --- a/sc/inc/dptabsrc.hxx +++ b/sc/inc/dptabsrc.hxx @@ -88,7 +88,7 @@ class ScDPSource : public cppu::WeakImplHelper< { private: ScDPTableData* pData; // data source (ScDPObject manages its life time) - ScDPDimensions* pDimensions; // api objects + rtl::Reference<ScDPDimensions> pDimensions; // api objects // settings: std::vector<long> maColDims; diff --git a/sc/inc/fmtuno.hxx b/sc/inc/fmtuno.hxx index 76209ad..774d94a 100644 --- a/sc/inc/fmtuno.hxx +++ b/sc/inc/fmtuno.hxx @@ -74,7 +74,7 @@ class ScTableConditionalFormat : public cppu::WeakImplHelper< css::lang::XServiceInfo > { private: - std::vector<ScTableConditionalEntry*> aEntries; + std::vector<rtl::Reference<ScTableConditionalEntry>> maEntries; ScTableConditionalEntry* GetObjectByIndex_Impl(sal_uInt16 nIndex) const; void AddEntry_Impl(const ScCondFormatEntryItem& aEntry); diff --git a/sc/inc/notesuno.hxx b/sc/inc/notesuno.hxx index ca9a3f4..5b41cb2 100644 --- a/sc/inc/notesuno.hxx +++ b/sc/inc/notesuno.hxx @@ -27,6 +27,7 @@ #include <com/sun/star/text/XSimpleText.hpp> #include <cppuhelper/implbase.hxx> #include <svl/lstner.hxx> +#include <rtl/ref.hxx> #include "address.hxx" class ScDocShell; @@ -118,7 +119,7 @@ private: private: ScDocShell* pDocShell; ScAddress aCellPos; - SvxUnoText* pUnoText; + rtl::Reference<SvxUnoText> pUnoText; }; #endif diff --git a/sc/source/core/data/dptabsrc.cxx b/sc/source/core/data/dptabsrc.cxx index c92c4e2..b572614 100644 --- a/sc/source/core/data/dptabsrc.cxx +++ b/sc/source/core/data/dptabsrc.cxx @@ -92,7 +92,6 @@ static bool lcl_GetBoolFromAny( const uno::Any& aAny ) ScDPSource::ScDPSource( ScDPTableData* pD ) : pData( pD ), - pDimensions( nullptr ), bColumnGrand( true ), // default is true bRowGrand( true ), bIgnoreEmptyRows( false ), @@ -111,9 +110,6 @@ ScDPSource::ScDPSource( ScDPTableData* pD ) : ScDPSource::~ScDPSource() { - if (pDimensions) - pDimensions->release(); // ref-counted - // free lists delete[] pColResults; @@ -299,12 +295,11 @@ bool ScDPSource::IsDateDimension(long nDim) ScDPDimensions* ScDPSource::GetDimensionsObject() { - if (!pDimensions) + if (!pDimensions.is()) { pDimensions = new ScDPDimensions(this); - pDimensions->acquire(); // ref-counted } - return pDimensions; + return pDimensions.get(); } uno::Reference<container::XNameAccess> SAL_CALL ScDPSource::getDimensions() throw(uno::RuntimeException, std::exception) @@ -319,7 +314,7 @@ void ScDPSource::SetDupCount( long nNew ) ScDPDimension* ScDPSource::AddDuplicated(long /* nSource */, const OUString& rNewName) { - OSL_ENSURE( pDimensions, "AddDuplicated without dimensions?" ); + OSL_ENSURE( pDimensions.is(), "AddDuplicated without dimensions?" ); // re-use @@ -539,11 +534,7 @@ void ScDPSource::disposeData() aRowLevelList.clear(); } - if ( pDimensions ) - { - pDimensions->release(); // ref-counted - pDimensions = nullptr; // settings have to be applied (from SaveData) again! - } + pDimensions.clear(); // settings have to be applied (from SaveData) again! SetDupCount( 0 ); maColDims.clear(); diff --git a/sc/source/filter/xml/XMLTrackedChangesContext.cxx b/sc/source/filter/xml/XMLTrackedChangesContext.cxx index ac36be3..6c56b0f 100644 --- a/sc/source/filter/xml/XMLTrackedChangesContext.cxx +++ b/sc/source/filter/xml/XMLTrackedChangesContext.cxx @@ -228,7 +228,7 @@ class ScXMLChangeCellContext : public SvXMLImportContext OUString sText; OUString& rInputString; - ScEditEngineTextObj* pEditTextObj; + rtl::Reference<ScEditEngineTextObj> mpEditTextObj; double& rDateTimeValue; double fValue; sal_uInt16& rType; @@ -254,7 +254,7 @@ public: const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override; void CreateTextPContext(bool bIsNewParagraph); - bool IsEditCell() { return pEditTextObj != nullptr; } + bool IsEditCell() { return mpEditTextObj.is(); } void SetText(const OUString& sTempText) { sText = sTempText; } virtual void EndElement() override; @@ -1012,7 +1012,6 @@ ScXMLChangeCellContext::ScXMLChangeCellContext( ScXMLImport& rImport, : SvXMLImportContext( rImport, nPrfx, rLName ) , mrOldCell(rOldCell) , rInputString(rTempInputString) - , pEditTextObj(nullptr) , rDateTimeValue(fDateTimeValue) , fValue(0.0) , rType(nType) @@ -1122,7 +1121,7 @@ SvXMLImportContext *ScXMLChangeCellContext::CreateChildContext( sal_uInt16 nPref } else { - if (!pEditTextObj) + if (!mpEditTextObj.is()) CreateTextPContext(true); pContext = GetScImport().GetTextImport()->CreateTextChildContext( GetScImport(), nPrefix, rLocalName, xAttrList); @@ -1139,10 +1138,9 @@ void ScXMLChangeCellContext::CreateTextPContext(bool bIsNewParagraph) { if (GetScImport().GetDocument()) { - pEditTextObj = new ScEditEngineTextObj(); - pEditTextObj->acquire(); - pEditTextObj->GetEditEngine()->SetEditTextObjectPool(GetScImport().GetDocument()->GetEditPool()); - uno::Reference <text::XText> xText(pEditTextObj); + mpEditTextObj = new ScEditEngineTextObj(); + mpEditTextObj->GetEditEngine()->SetEditTextObjectPool(GetScImport().GetDocument()->GetEditPool()); + uno::Reference <text::XText> xText(mpEditTextObj.get()); if (xText.is()) { uno::Reference<text::XTextCursor> xTextCursor(xText->createTextCursor()); @@ -1164,7 +1162,7 @@ void ScXMLChangeCellContext::EndElement() if (!bEmpty) { ScDocument* pDoc = GetScImport().GetDocument(); - if (pEditTextObj) + if (mpEditTextObj.is()) { if (GetImport().GetTextImport()->GetCursor().is()) { @@ -1179,9 +1177,9 @@ void ScXMLChangeCellContext::EndElement() // The cell will own the text object instance. mrOldCell.meType = CELLTYPE_EDIT; - mrOldCell.mpEditText = pEditTextObj->CreateTextObject(); + mrOldCell.mpEditText = mpEditTextObj->CreateTextObject(); GetScImport().GetTextImport()->ResetCursor(); - pEditTextObj->release(); + mpEditTextObj.clear(); } else { diff --git a/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx b/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx index 9979338..4e6aa39 100644 --- a/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx +++ b/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx @@ -1186,9 +1186,7 @@ ScAccessibleDocumentPagePreview::ScAccessibleDocumentPagePreview( ScAccessibleDocumentBase(rxParent), mpViewShell(pViewShell), mpNotesChildren(nullptr), - mpShapeChildren(nullptr), - mpHeader(nullptr), - mpFooter(nullptr) + mpShapeChildren(nullptr) { if (pViewShell) pViewShell->AddAccessibilityObject(*this); @@ -1210,16 +1208,8 @@ void SAL_CALL ScAccessibleDocumentPagePreview::disposing() { SolarMutexGuard aGuard; mpTable.clear(); - if (mpHeader) - { - mpHeader->release(); - mpHeader = nullptr; - } - if (mpFooter) - { - mpFooter->release(); - mpFooter = nullptr; - } + mpHeader.clear(); + mpFooter.clear(); if (mpViewShell) { @@ -1361,29 +1351,27 @@ uno::Reference< XAccessible > SAL_CALL ScAccessibleDocumentPagePreview::getAcces xAccessible = GetNotesChildren()->GetAt(rPoint); if (!xAccessible.is()) { - if (!mpHeader || !mpFooter) + if (!mpHeader.is() || !mpFooter.is()) { const ScPreviewLocationData& rData = mpViewShell->GetLocationData(); ScPagePreviewCountData aCount( rData, mpViewShell->GetWindow(), GetNotesChildren(), GetShapeChildren() ); - if (!mpHeader) + if (!mpHeader.is()) { mpHeader = new ScAccessiblePageHeader( this, mpViewShell, true, aCount.nBackShapes + aCount.nHeaders - 1); - mpHeader->acquire(); } - if (!mpFooter) + if (!mpFooter.is()) { mpFooter = new ScAccessiblePageHeader( this, mpViewShell, false, aCount.nBackShapes + aCount.nHeaders + aCount.nTables + aCount.nNoteParagraphs + aCount.nFooters - 1 ); - mpFooter->acquire(); } } Point aPoint(VCLPoint(rPoint)); if (VCLRectangle(mpHeader->getBounds()).IsInside(aPoint)) - xAccessible = mpHeader; + xAccessible = mpHeader.get(); else if (VCLRectangle(mpFooter->getBounds()).IsInside(aPoint)) - xAccessible = mpFooter; + xAccessible = mpFooter.get(); } if (!xAccessible.is()) xAccessible = GetShapeChildren()->GetBackgroundShapeAt(rPoint); @@ -1444,13 +1432,12 @@ uno::Reference<XAccessible> SAL_CALL ScAccessibleDocumentPagePreview::getAccessi } else if ( nIndex < aCount.nBackShapes + aCount.nHeaders ) { - if ( !mpHeader ) + if ( !mpHeader.is() ) { mpHeader = new ScAccessiblePageHeader( this, mpViewShell, true, nIndex ); - mpHeader->acquire(); } - xAccessible = mpHeader; + xAccessible = mpHeader.get(); } else if ( nIndex < aCount.nBackShapes + aCount.nHeaders + aCount.nTables ) { @@ -1467,12 +1454,11 @@ uno::Reference<XAccessible> SAL_CALL ScAccessibleDocumentPagePreview::getAccessi } else if ( (nIndex < aCount.nBackShapes + aCount.nHeaders + aCount.nTables + aCount.nNoteParagraphs + aCount.nFooters) ) { - if ( !mpFooter ) + if ( !mpFooter.is() ) { mpFooter = new ScAccessiblePageHeader( this, mpViewShell, false, nIndex ); - mpFooter->acquire(); } - xAccessible = mpFooter; + xAccessible = mpFooter.get(); } else { diff --git a/sc/source/ui/inc/AccessibleDocumentPagePreview.hxx b/sc/source/ui/inc/AccessibleDocumentPagePreview.hxx index d72a417..26c6d9d 100644 --- a/sc/source/ui/inc/AccessibleDocumentPagePreview.hxx +++ b/sc/source/ui/inc/AccessibleDocumentPagePreview.hxx @@ -135,8 +135,8 @@ private: ScNotesChildren* mpNotesChildren; ScShapeChildren* mpShapeChildren; rtl::Reference<ScAccessiblePreviewTable> mpTable; - ScAccessiblePageHeader* mpHeader; - ScAccessiblePageHeader* mpFooter; + rtl::Reference<ScAccessiblePageHeader> mpHeader; + rtl::Reference<ScAccessiblePageHeader> mpFooter; bool IsDefunc( const css::uno::Reference<css::accessibility::XAccessibleStateSet>& rxParentStates); diff --git a/sc/source/ui/unoobj/fmtuno.cxx b/sc/source/ui/unoobj/fmtuno.cxx index e4692ae..417c97b 100644 --- a/sc/source/ui/unoobj/fmtuno.cxx +++ b/sc/source/ui/unoobj/fmtuno.cxx @@ -195,11 +195,10 @@ void ScTableConditionalFormat::FillFormat( ScConditionalFormat& rFormat, OSL_ENSURE( rFormat.IsEmpty(), "FillFormat: Format nicht leer" ); - std::vector<ScTableConditionalEntry*>::const_iterator iter; - for (iter = aEntries.begin(); iter != aEntries.end(); ++iter) + for (const auto & i : maEntries) { ScCondFormatEntryItem aData; - (*iter)->GetData(aData); + i->GetData(aData); FormulaGrammar::Grammar eGrammar1 = lclResolveGrammar( eGrammar, aData.meGrammar1 ); FormulaGrammar::Grammar eGrammar2 = lclResolveGrammar( eGrammar, aData.meGrammar2 ); @@ -229,23 +228,19 @@ void ScTableConditionalFormat::FillFormat( ScConditionalFormat& rFormat, ScTableConditionalFormat::~ScTableConditionalFormat() { - std::for_each(aEntries.begin(), aEntries.end(), - [] (ScTableConditionalEntry *const pEntry) { pEntry->release(); } ); - } void ScTableConditionalFormat::AddEntry_Impl(const ScCondFormatEntryItem& aEntry) { ScTableConditionalEntry* pNew = new ScTableConditionalEntry(aEntry); - pNew->acquire(); - aEntries.push_back(pNew); + maEntries.push_back(pNew); } // XSheetConditionalFormat ScTableConditionalEntry* ScTableConditionalFormat::GetObjectByIndex_Impl(sal_uInt16 nIndex) const { - return nIndex < aEntries.size() ? aEntries[nIndex] : nullptr; + return nIndex < maEntries.size() ? maEntries[nIndex].get() : nullptr; } void SAL_CALL ScTableConditionalFormat::addNew( @@ -349,22 +344,16 @@ void SAL_CALL ScTableConditionalFormat::removeByIndex( sal_Int32 nIndex ) { SolarMutexGuard aGuard; - if (nIndex < static_cast<sal_Int32>(aEntries.size()) && nIndex >= 0) + if (nIndex < static_cast<sal_Int32>(maEntries.size()) && nIndex >= 0) { - std::vector<ScTableConditionalEntry*>::iterator iter = aEntries.begin()+nIndex; - - (*iter)->release(); - aEntries.erase(iter); + maEntries.erase(maEntries.begin()+nIndex); } } void SAL_CALL ScTableConditionalFormat::clear() throw(uno::RuntimeException, std::exception) { SolarMutexGuard aGuard; - std::for_each(aEntries.begin(),aEntries.end(), - [] (ScTableConditionalEntry *const pEntry) { pEntry->release(); } ); - - aEntries.clear(); + maEntries.clear(); } // XEnumerationAccess @@ -381,7 +370,7 @@ uno::Reference<container::XEnumeration> SAL_CALL ScTableConditionalFormat::creat sal_Int32 SAL_CALL ScTableConditionalFormat::getCount() throw(uno::RuntimeException, std::exception) { SolarMutexGuard aGuard; - return aEntries.size(); + return maEntries.size(); } uno::Any SAL_CALL ScTableConditionalFormat::getByIndex( sal_Int32 nIndex ) @@ -425,7 +414,7 @@ uno::Any SAL_CALL ScTableConditionalFormat::getByName( const OUString& aName ) SolarMutexGuard aGuard; uno::Reference<sheet::XSheetConditionalEntry> xEntry; - long nCount = aEntries.size(); + long nCount = maEntries.size(); for (long i=0; i<nCount; i++) if ( aName == lcl_GetEntryNameFromIndex(i) ) { @@ -444,7 +433,7 @@ uno::Sequence<OUString> SAL_CALL ScTableConditionalFormat::getElementNames() { SolarMutexGuard aGuard; - long nCount = aEntries.size(); + long nCount = maEntries.size(); uno::Sequence<OUString> aNames(nCount); OUString* pArray = aNames.getArray(); for (long i=0; i<nCount; i++) @@ -458,7 +447,7 @@ sal_Bool SAL_CALL ScTableConditionalFormat::hasByName( const OUString& aName ) { SolarMutexGuard aGuard; - long nCount = aEntries.size(); + long nCount = maEntries.size(); for (long i=0; i<nCount; i++) if ( aName == lcl_GetEntryNameFromIndex(i) ) return true; diff --git a/sc/source/ui/unoobj/notesuno.cxx b/sc/source/ui/unoobj/notesuno.cxx index ad2f399..b6b5c5f 100644 --- a/sc/source/ui/unoobj/notesuno.cxx +++ b/sc/source/ui/unoobj/notesuno.cxx @@ -57,8 +57,7 @@ SC_SIMPLE_SERVICE_INFO( ScAnnotationObj, "ScAnnotationObj", "com.sun.star.sheet. ScAnnotationObj::ScAnnotationObj(ScDocShell* pDocSh, const ScAddress& rPos) : pDocShell( pDocSh ), - aCellPos( rPos ), - pUnoText( nullptr ) + aCellPos( rPos ) { pDocShell->GetDocument().AddUnoObject(*this); @@ -72,9 +71,6 @@ ScAnnotationObj::~ScAnnotationObj() if (pDocShell) pDocShell->GetDocument().RemoveUnoObject(*this); - - if (pUnoText) - pUnoText->release(); } void ScAnnotationObj::Notify( SfxBroadcaster&, const SfxHint& rHint ) @@ -237,14 +233,13 @@ uno::Reference < drawing::XShape > SAL_CALL ScAnnotationObj::getAnnotationShape( SvxUnoText& ScAnnotationObj::GetUnoText() { - if (!pUnoText) + if (!pUnoText.is()) { ScAnnotationEditSource aEditSource( pDocShell, aCellPos ); pUnoText = new SvxUnoText( &aEditSource, lcl_GetAnnotationPropertySet(), uno::Reference<text::XText>() ); - pUnoText->acquire(); } - return *pUnoText; + return *pUnoText.get(); } const ScPostIt* ScAnnotationObj::ImplGetNote() const _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits