From 347dd129735c6a18f73d5a9ba092b1925b084399 Mon Sep 17 00:00:00 2001 From: Frank Schönheit Date: Tue, 12 Jun 2001 10:52:41 +0000 Subject: #88017# #87898# corrected ref-counting while listening on the aggregate --- forms/source/component/DatabaseForm.cxx | 26 +++++++++++++++++++------- forms/source/component/DatabaseForm.hxx | 5 +++-- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/forms/source/component/DatabaseForm.cxx b/forms/source/component/DatabaseForm.cxx index 277534a83fbf..6592cc4fb43f 100644 --- a/forms/source/component/DatabaseForm.cxx +++ b/forms/source/component/DatabaseForm.cxx @@ -2,9 +2,9 @@ * * $RCSfile: DatabaseForm.cxx,v $ * - * $Revision: 1.28 $ + * $Revision: 1.29 $ * - * last change: $Author: fs $ $Date: 2001-05-31 14:08:06 $ + * last change: $Author: fs $ $Date: 2001-06-12 11:52:27 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -765,6 +765,7 @@ ODatabaseForm::ODatabaseForm(const Reference& _rxFactory) ,m_pLoadTimer(NULL) ,m_nResetsPending(0) ,m_bForwardingConnection(sal_False) + ,m_pAggregatePropertyMultiplexer(NULL) { DBG_CTOR(ODatabaseForm,NULL); @@ -782,11 +783,12 @@ ODatabaseForm::ODatabaseForm(const Reference& _rxFactory) // listen for the properties, important for Parameters if (m_xAggregateSet.is()) { - OPropertyChangeMultiplexer* pMultiplexer = new OPropertyChangeMultiplexer(this, m_xAggregateSet); - pMultiplexer->addProperty(PROPERTY_COMMAND); - pMultiplexer->addProperty(PROPERTY_FILTER_CRITERIA); - pMultiplexer->addProperty(PROPERTY_APPLYFILTER); - pMultiplexer->addProperty(PROPERTY_ACTIVE_CONNECTION); + m_pAggregatePropertyMultiplexer = new OPropertyChangeMultiplexer(this, m_xAggregateSet, sal_False); + m_pAggregatePropertyMultiplexer->acquire(); + m_pAggregatePropertyMultiplexer->addProperty(PROPERTY_COMMAND); + m_pAggregatePropertyMultiplexer->addProperty(PROPERTY_FILTER_CRITERIA); + m_pAggregatePropertyMultiplexer->addProperty(PROPERTY_APPLYFILTER); + m_pAggregatePropertyMultiplexer->addProperty(PROPERTY_ACTIVE_CONNECTION); } if (m_xAggregate.is()) @@ -809,6 +811,13 @@ ODatabaseForm::~ODatabaseForm() if (m_xAggregate.is()) m_xAggregate->setDelegator(InterfaceRef()); + + if (m_pAggregatePropertyMultiplexer) + { + m_pAggregatePropertyMultiplexer->dispose(); + m_pAggregatePropertyMultiplexer->release(); + m_pAggregatePropertyMultiplexer = NULL; + } } //============================================================================== @@ -1875,6 +1884,9 @@ sal_Bool ODatabaseForm::executeRowSet(ReusableMutexGuard& _rClearForNotifies, sa //------------------------------------------------------------------ void ODatabaseForm::disposing() { + if (m_pAggregatePropertyMultiplexer) + m_pAggregatePropertyMultiplexer->dispose(); + if (m_bLoaded) unload(); diff --git a/forms/source/component/DatabaseForm.hxx b/forms/source/component/DatabaseForm.hxx index f5cc66a4e2c8..f3f066a725f5 100644 --- a/forms/source/component/DatabaseForm.hxx +++ b/forms/source/component/DatabaseForm.hxx @@ -2,9 +2,9 @@ * * $RCSfile: DatabaseForm.hxx,v $ * - * $Revision: 1.8 $ + * $Revision: 1.9 $ * - * last change: $Author: fs $ $Date: 2001-04-12 09:44:13 $ + * last change: $Author: fs $ $Date: 2001-06-12 11:52:41 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -290,6 +290,7 @@ class ODatabaseForm :public OFormComponents // same object, interface as member because of performance reasons ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet> m_xAggregateAsRowSet; + OPropertyChangeMultiplexer* m_pAggregatePropertyMultiplexer; // Verwaltung der ControlGruppen OGroupManager* m_pGroupManager; OParameterInfoImpl* m_pParameterInfo; -- cgit v1.2.3