summaryrefslogtreecommitdiff
path: root/configmgr
diff options
context:
space:
mode:
authorLars Langhans <lla@openoffice.org>2001-02-01 14:49:36 +0000
committerLars Langhans <lla@openoffice.org>2001-02-01 14:49:36 +0000
commit4332a536b0f310145237fb22b694ab371405e1fb (patch)
treee81ce14b397bdc430d1e861e8d9e08cc5b88ce80 /configmgr
parentf9a6c14511913bfaf2bd86c0e22852e5f781e090 (diff)
#83345# disposing providerimpl or remove providerimpl at shutdown right handling inserted.
Diffstat (limited to 'configmgr')
-rw-r--r--configmgr/source/api2/providerimpl.cxx26
1 files changed, 22 insertions, 4 deletions
diff --git a/configmgr/source/api2/providerimpl.cxx b/configmgr/source/api2/providerimpl.cxx
index 36534a7eccc6..8bb656bdea57 100644
--- a/configmgr/source/api2/providerimpl.cxx
+++ b/configmgr/source/api2/providerimpl.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: providerimpl.cxx,v $
*
- * $Revision: 1.21 $
+ * $Revision: 1.22 $
*
- * last change: $Author: dg $ $Date: 2001-01-29 08:47:27 $
+ * last change: $Author: lla $ $Date: 2001-02-01 15:49:36 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -200,10 +200,11 @@ namespace configmgr
m_xDefaultOptions->setDefaultLocale(sDefaultLocale);
m_xDefaultOptions->setDefaultUser(sDefaultUser);
- OProviderImplDisposingListener *pListener = new OProviderImplDisposingListener(*this);
+ OProviderImplDisposingListener *pListener = new OProviderImplDisposingListener(this);
m_xEventListener = pListener;
uno::Reference<com::sun::star::lang::XComponent> xComponent(_rModule.getServiceManager(), uno::UNO_QUERY);
+ m_xComponent = xComponent;
if (xComponent.is())
{
xComponent->addEventListener(m_xEventListener);
@@ -217,6 +218,12 @@ namespace configmgr
delete m_pNewProviders;
m_pTreeMgr->release();
m_pTreeMgr = NULL;
+
+ // Second fall, Providerimpl will be destroyed befor ServiceMgr send disposing
+ if (m_xEventListener.is() && m_xComponent.is())
+ {
+ m_xComponent->removeEventListener(m_xEventListener);
+ }
}
// --------------------------------- disposing ---------------------------------
@@ -224,7 +231,18 @@ namespace configmgr
void SAL_CALL OProviderImpl::disposing(com::sun::star::lang::EventObject const& rEvt) throw()
{
// stop lasy writing
- m_pTreeMgr->disableAsync();
+ if (m_pTreeMgr)
+ {
+ m_pTreeMgr->disableAsync();
+
+ // first fall, ServiceMgr send disposing
+ // if (m_xComponent.is())
+ // {
+ // m_xComponent->removeEventListener(m_xEventListener);
+ // }
+ m_xComponent = NULL;
+ m_xEventListener = NULL;
+ }
}
//-----------------------------------------------------------------------------