summaryrefslogtreecommitdiff
path: root/desktop/source/deployment/registry/inc/dp_backend.h
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/source/deployment/registry/inc/dp_backend.h')
-rw-r--r--desktop/source/deployment/registry/inc/dp_backend.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/desktop/source/deployment/registry/inc/dp_backend.h b/desktop/source/deployment/registry/inc/dp_backend.h
index c3bf83505ee2..fe52c8ffc7e3 100644
--- a/desktop/source/deployment/registry/inc/dp_backend.h
+++ b/desktop/source/deployment/registry/inc/dp_backend.h
@@ -244,11 +244,17 @@ class PackageRegistryBackend
: protected ::dp_misc::MutexHolder, public t_BackendBase
{
::rtl::OUString m_cachePath;
-
+ //The map held originally WeakReferences. The map entries are removed in the disposing
+ //function, which is called when the XPackages are destructed or they are
+ //explicitely disposed. The latter happens, for example, when a extension is
+ //removed (see dp_manager.cxx). However, because of how the help systems work, now
+ // XPackageManager::getDeployedPackages is called often. This results in a lot
+ //of bindPackage calls which are costly. Therefore we keep hard references in
+ //the map now.
typedef ::std::hash_map<
- ::rtl::OUString, css::uno::WeakReference<css::deployment::XPackage>,
- ::rtl::OUStringHash > t_string2weakref;
- t_string2weakref m_bound;
+ ::rtl::OUString, css::uno::Reference<css::deployment::XPackage>,
+ ::rtl::OUStringHash > t_string2ref;
+ t_string2ref m_bound;
protected:
css::uno::Reference<css::uno::XComponentContext> m_xComponentContext;