diff options
author | Caolán McNamara <caolanm@redhat.com> | 2011-03-23 16:10:20 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2011-03-23 17:07:25 +0000 |
commit | 796262462d58a3a0ece4411cd314ece2d6cf3290 (patch) | |
tree | aa3b274ab913b7bcf9a76174439e684dc58b6360 | |
parent | 498887fd01f7793842430464508f39352b76d452 (diff) |
fix more lifecycle problems
5 files changed, 12 insertions, 3 deletions
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 <threadhelp/readguard.hxx> #include <threadhelp/writeguard.hxx> +#include "helper/mischelper.hxx" #include <acceleratorconst.h> #include <services.h> @@ -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 <threadhelp/readguard.hxx> #include <threadhelp/writeguard.hxx> +#include "helper/mischelper.hxx" #include <acceleratorconst.h> #include <services.h> @@ -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. */ |