summaryrefslogtreecommitdiff
path: root/framework
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2011-03-23 16:10:20 +0000
committerCaolán McNamara <caolanm@redhat.com>2011-03-23 17:07:25 +0000
commit796262462d58a3a0ece4411cd314ece2d6cf3290 (patch)
treeaa3b274ab913b7bcf9a76174439e684dc58b6360 /framework
parent498887fd01f7793842430464508f39352b76d452 (diff)
fix more lifecycle problems
Diffstat (limited to 'framework')
-rwxr-xr-xframework/source/accelerators/acceleratorconfiguration.cxx2
-rwxr-xr-xframework/source/accelerators/globalacceleratorconfiguration.cxx4
-rwxr-xr-xframework/source/accelerators/moduleacceleratorconfiguration.cxx4
-rwxr-xr-xframework/source/inc/accelerators/globalacceleratorconfiguration.hxx3
-rwxr-xr-xframework/source/inc/accelerators/moduleacceleratorconfiguration.hxx2
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. */