From 796262462d58a3a0ece4411cd314ece2d6cf3290 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Wed, 23 Mar 2011 16:10:20 +0000 Subject: fix more lifecycle problems --- framework/source/accelerators/acceleratorconfiguration.cxx | 2 +- framework/source/accelerators/globalacceleratorconfiguration.cxx | 4 +++- framework/source/accelerators/moduleacceleratorconfiguration.cxx | 4 +++- framework/source/inc/accelerators/globalacceleratorconfiguration.hxx | 3 +++ framework/source/inc/accelerators/moduleacceleratorconfiguration.hxx | 2 ++ 5 files changed, 12 insertions(+), 3 deletions(-) (limited to 'framework') diff --git a/framework/source/accelerators/acceleratorconfiguration.cxx b/framework/source/accelerators/acceleratorconfiguration.cxx index ef23cabea3..c406e7160b 100755 --- a/framework/source/accelerators/acceleratorconfiguration.cxx +++ b/framework/source/accelerators/acceleratorconfiguration.cxx @@ -684,7 +684,7 @@ XCUBasedAcceleratorConfiguration::XCUBasedAcceleratorConfiguration(const css::un , m_pPrimaryWriteCache(0 ) , m_pSecondaryWriteCache(0 ) { - static const ::rtl::OUString CFG_ENTRY_ACCELERATORS(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Accelerators")); + const ::rtl::OUString CFG_ENTRY_ACCELERATORS(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Accelerators")); m_xCfg = css::uno::Reference< css::container::XNameAccess > ( ::comphelper::ConfigurationHelper::openConfig( m_xSMGR, CFG_ENTRY_ACCELERATORS, ::comphelper::ConfigurationHelper::E_ALL_LOCALES ), css::uno::UNO_QUERY ); diff --git a/framework/source/accelerators/globalacceleratorconfiguration.cxx b/framework/source/accelerators/globalacceleratorconfiguration.cxx index 3d2c8d9bad..c60b7a8936 100755 --- a/framework/source/accelerators/globalacceleratorconfiguration.cxx +++ b/framework/source/accelerators/globalacceleratorconfiguration.cxx @@ -34,6 +34,7 @@ // own includes #include #include +#include "helper/mischelper.hxx" #include #include @@ -117,7 +118,8 @@ void GlobalAcceleratorConfiguration::impl_ts_fillCache() XCUBasedAcceleratorConfiguration::reload(); css::uno::Reference< css::util::XChangesNotifier > xBroadcaster(m_xCfg, css::uno::UNO_QUERY_THROW); - xBroadcaster->addChangesListener(static_cast< css::util::XChangesListener* >(this)); + m_xCfgListener = new WeakChangesListener(this); + xBroadcaster->addChangesListener(m_xCfgListener); } catch(const css::uno::RuntimeException& exRun) { throw exRun; } diff --git a/framework/source/accelerators/moduleacceleratorconfiguration.cxx b/framework/source/accelerators/moduleacceleratorconfiguration.cxx index e0ee119910..da14ccda09 100755 --- a/framework/source/accelerators/moduleacceleratorconfiguration.cxx +++ b/framework/source/accelerators/moduleacceleratorconfiguration.cxx @@ -34,6 +34,7 @@ // own includes #include #include +#include "helper/mischelper.hxx" #include #include @@ -152,7 +153,8 @@ void ModuleAcceleratorConfiguration::impl_ts_fillCache() XCUBasedAcceleratorConfiguration::reload(); css::uno::Reference< css::util::XChangesNotifier > xBroadcaster(m_xCfg, css::uno::UNO_QUERY_THROW); - xBroadcaster->addChangesListener(static_cast< css::util::XChangesListener* >(this)); + m_xCfgListener = new WeakChangesListener(this); + xBroadcaster->addChangesListener(m_xCfgListener); } catch(const css::uno::RuntimeException& exRun) { throw exRun; } diff --git a/framework/source/inc/accelerators/globalacceleratorconfiguration.hxx b/framework/source/inc/accelerators/globalacceleratorconfiguration.hxx index e83eaeeaf9..fad58fc702 100755 --- a/framework/source/inc/accelerators/globalacceleratorconfiguration.hxx +++ b/framework/source/inc/accelerators/globalacceleratorconfiguration.hxx @@ -95,6 +95,9 @@ class GlobalAcceleratorConfiguration : public XCUBasedAcceleratorConfiguration private: ::rtl::OUString m_sLocale; + + /** helper to listen for configuration changes without ownership cycle problems */ + css::uno::Reference< css::util::XChangesListener > m_xCfgListener; //---------------------------------- /** read all data into the cache. */ diff --git a/framework/source/inc/accelerators/moduleacceleratorconfiguration.hxx b/framework/source/inc/accelerators/moduleacceleratorconfiguration.hxx index 5f073f8e36..fc4d53b66c 100755 --- a/framework/source/inc/accelerators/moduleacceleratorconfiguration.hxx +++ b/framework/source/inc/accelerators/moduleacceleratorconfiguration.hxx @@ -103,6 +103,8 @@ class ModuleAcceleratorConfiguration : public XCUBasedAcceleratorConfiguration // helper private: + /** helper to listen for configuration changes without ownership cycle problems */ + css::uno::Reference< css::util::XChangesListener > m_xCfgListener; //---------------------------------- /** read all data into the cache. */ -- cgit v1.2.3