diff options
author | Jan Holesovsky <kendy@collabora.com> | 2014-01-22 11:54:19 +0100 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2014-01-22 15:09:28 +0100 |
commit | c2c530da69152ff9192b9726aa95961803ce9b29 (patch) | |
tree | 15e514573f35d9f376520fc2c015634dc4ee8c25 /framework/source/accelerators/moduleacceleratorconfiguration.cxx | |
parent | 219a2939c9f58690356b2a3f64c580a0865fdc64 (diff) |
Introduce static inline cppu::acquire(), and make use of that.
This is much better approach compared to the callback function, as it allows
passing arguments to the c++ constructor directly, while still allowing some
additional initialization after having acquired the instance.
Change-Id: I5a0f981915dd58f1522ee6054e53a3550b29d624
Diffstat (limited to 'framework/source/accelerators/moduleacceleratorconfiguration.cxx')
-rw-r--r-- | framework/source/accelerators/moduleacceleratorconfiguration.cxx | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/framework/source/accelerators/moduleacceleratorconfiguration.cxx b/framework/source/accelerators/moduleacceleratorconfiguration.cxx index 731161615564..7648c2792b1a 100644 --- a/framework/source/accelerators/moduleacceleratorconfiguration.cxx +++ b/framework/source/accelerators/moduleacceleratorconfiguration.cxx @@ -68,7 +68,8 @@ public: reference to an uno service manager, which is used internaly. */ ModuleAcceleratorConfiguration( - const css::uno::Reference< css::uno::XComponentContext >& xContext); + const css::uno::Reference< css::uno::XComponentContext >& xContext, + const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& lArguments); /** TODO */ virtual ~ModuleAcceleratorConfiguration(); @@ -96,9 +97,8 @@ public: // XComponent virtual void SAL_CALL dispose() throw (css::uno::RuntimeException); - /// Initialization function after having acquire()'d. - void SAL_CALL constructorInit(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >&) - throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); + /// This has to be called after when the instance is acquire()'d. + void SAL_CALL fillCache(); private: /** helper to listen for configuration changes without ownership cycle problems */ @@ -106,17 +106,10 @@ private: }; ModuleAcceleratorConfiguration::ModuleAcceleratorConfiguration( - const css::uno::Reference< css::uno::XComponentContext >& xContext) + const css::uno::Reference< css::uno::XComponentContext >& xContext, + const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& lArguments) : ModuleAcceleratorConfiguration_BASE(xContext) { -} - -ModuleAcceleratorConfiguration::~ModuleAcceleratorConfiguration() -{ -} - -void ModuleAcceleratorConfiguration::constructorInit(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& lArguments) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException) -{ WriteGuard aWriteLock(m_aLock); OUString sModule; @@ -136,7 +129,14 @@ void ModuleAcceleratorConfiguration::constructorInit(const ::com::sun::star::uno static_cast< ::cppu::OWeakObject* >(this)); aWriteLock.unlock(); +} +ModuleAcceleratorConfiguration::~ModuleAcceleratorConfiguration() +{ +} + +void ModuleAcceleratorConfiguration::fillCache() +{ // SAFE -> ---------------------------------- ReadGuard aReadLock(m_aLock); m_sModuleCFG = m_sModule; @@ -192,12 +192,14 @@ void SAL_CALL ModuleAcceleratorConfiguration::dispose() extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL com_sun_star_comp_framework_ModuleAcceleratorConfiguration_get_implementation( css::uno::XComponentContext *context, - cppu::constructor_InitializationFunc &init_func) + css::uno::Sequence<css::uno::Any> const &arguments) { - // 2nd phase initialization needed - init_func = static_cast<cppu::constructor_InitializationFunc>(&ModuleAcceleratorConfiguration::constructorInit); + ModuleAcceleratorConfiguration *inst = new ModuleAcceleratorConfiguration(context, arguments); + css::uno::XInterface *acquired_inst = cppu::acquire(inst); + + inst->fillCache(); - return static_cast<cppu::OWeakObject *>(new ModuleAcceleratorConfiguration(context)); + return acquired_inst; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |