From 8c5a3b448a50981b41b2860c64a3039265398cf9 Mon Sep 17 00:00:00 2001 From: Maxim Monastirsky Date: Sun, 19 Feb 2017 11:56:37 +0200 Subject: Single GlobalAcceleratorConfiguration should be enough avoid reading the configuration again and again. Change-Id: I4179da53114990e5ee68b47125ccef356ca00d53 --- .../globalacceleratorconfiguration.cxx | 23 ++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'framework/source') diff --git a/framework/source/accelerators/globalacceleratorconfiguration.cxx b/framework/source/accelerators/globalacceleratorconfiguration.cxx index ba5a2e407b8e..d8d1f859ceb7 100644 --- a/framework/source/accelerators/globalacceleratorconfiguration.cxx +++ b/framework/source/accelerators/globalacceleratorconfiguration.cxx @@ -111,6 +111,22 @@ void GlobalAcceleratorConfiguration::fillCache() {} } +struct Instance +{ + explicit Instance(css::uno::Reference const & context) + : instance(new GlobalAcceleratorConfiguration(context)) + { + instance->fillCache(); + } + + rtl::Reference instance; +}; + +struct Singleton: + public rtl::StaticWithArg< + Instance, css::uno::Reference, Singleton> +{}; + } extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL @@ -118,12 +134,7 @@ com_sun_star_comp_framework_GlobalAcceleratorConfiguration_get_implementation( css::uno::XComponentContext *context, css::uno::Sequence const &) { - GlobalAcceleratorConfiguration *inst = new GlobalAcceleratorConfiguration(context); - css::uno::XInterface *acquired_inst = cppu::acquire(inst); - - inst->fillCache(); - - return acquired_inst; + return cppu::acquire(static_cast(Singleton::get(context).instance.get())); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3