summaryrefslogtreecommitdiff
path: root/sfx2/source/appl/appdispatchprovider.cxx
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@collabora.com>2014-01-21 15:45:43 +0100
committerJan Holesovsky <kendy@collabora.com>2014-01-21 21:25:22 +0100
commitf278397787f7b79cee8536e806e8b7113800f2ef (patch)
tree1760bce432d466cf9f3ca444c89ec8f44306ab04 /sfx2/source/appl/appdispatchprovider.cxx
parent3780738154b8c3b3f9d85c64cccf621d97574886 (diff)
Change _get_implementation()'s not to do initialization directly.
Many of the initalizations (in eg. framework) have to be done on an acquire()'d object, so instead of doing the initialization directly, return the initialization member function back to the createInstance() / createInstanceWithContext() / ... and perform the initialization there. As a sideeffect, I belive the calling initialize() from servicemanager is not that much a hack any more - whoever converts the implementation to be constructor-base has the choice to provide the callback, or still initialize through XInitialization, where the callback is preferred by servicemanager when it exists. Change-Id: I8a87b75c54c1441ca0f184967d31ff4902fc4081
Diffstat (limited to 'sfx2/source/appl/appdispatchprovider.cxx')
-rw-r--r--sfx2/source/appl/appdispatchprovider.cxx19
1 files changed, 15 insertions, 4 deletions
diff --git a/sfx2/source/appl/appdispatchprovider.cxx b/sfx2/source/appl/appdispatchprovider.cxx
index c2b88af54dd4..6aa197c60df0 100644
--- a/sfx2/source/appl/appdispatchprovider.cxx
+++ b/sfx2/source/appl/appdispatchprovider.cxx
@@ -62,7 +62,11 @@ class SfxAppDispatchProvider : public ::cppu::WeakImplHelper2< css::frame::XAppD
{
css::uno::WeakReference < css::frame::XFrame > m_xFrame;
public:
- SfxAppDispatchProvider( const css::uno::Sequence< css::uno::Any >& aArguments )
+ SfxAppDispatchProvider()
+ throw (css::uno::Exception, css::uno::RuntimeException);
+
+ /// Initialization function after having acquire()'d.
+ void SAL_CALL constructorInit(const css::uno::Sequence< css::uno::Any >&)
throw (css::uno::Exception, css::uno::RuntimeException);
virtual OUString SAL_CALL getImplementationName()
@@ -90,9 +94,13 @@ public:
throw (css::uno::RuntimeException);
};
-SfxAppDispatchProvider::SfxAppDispatchProvider( const uno::Sequence<uno::Any>& aArguments )
+SfxAppDispatchProvider::SfxAppDispatchProvider()
throw (uno::Exception, uno::RuntimeException)
{
+}
+
+void SfxAppDispatchProvider::constructorInit(const css::uno::Sequence< css::uno::Any >& aArguments) throw (css::uno::Exception, css::uno::RuntimeException)
+{
Reference < XFrame > xFrame;
if ( aArguments.getLength() )
{
@@ -253,9 +261,12 @@ throw (uno::RuntimeException)
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
com_sun_star_comp_sfx2_AppDispatchProvider_get_implementation(
css::uno::XComponentContext *,
- css::uno::Sequence<css::uno::Any> const &arguments)
+ cppu::constructor_InitializationFunc &init_func)
{
- return static_cast<cppu::OWeakObject *>(new SfxAppDispatchProvider(arguments));
+ // 2nd phase initialization needed
+ init_func = static_cast<cppu::constructor_InitializationFunc>(&SfxAppDispatchProvider::constructorInit);
+
+ return static_cast<cppu::OWeakObject *>(new SfxAppDispatchProvider());
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */