summaryrefslogtreecommitdiff
path: root/framework/source/accelerators/moduleacceleratorconfiguration.cxx
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@collabora.com>2014-01-22 11:54:19 +0100
committerJan Holesovsky <kendy@collabora.com>2014-01-22 15:09:28 +0100
commitc2c530da69152ff9192b9726aa95961803ce9b29 (patch)
tree15e514573f35d9f376520fc2c015634dc4ee8c25 /framework/source/accelerators/moduleacceleratorconfiguration.cxx
parent219a2939c9f58690356b2a3f64c580a0865fdc64 (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.cxx36
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: */