diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2014-02-27 13:18:36 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-02-27 07:35:42 -0600 |
commit | 34c72f10939d473eb1a098fac1f05647c0232727 (patch) | |
tree | c4a0105c16558660622fab07368c7e45f4496ebc /padmin | |
parent | e661e6cb6f9e7c45bbd97c4dc8c489a7af952d60 (diff) |
fdo#75540 setProcessServiceFactory must be called before InitVCL
...because InitVCL now calls:
> comphelper::getProcessServiceFactory
> comphelper::getProcessComponentContext
> utl::DefaultFontConfiguration::DefaultFontConfiguration
> rtl::Static<utl::DefaultFontConfiguration, (anonymous namespace)::theDefaultFontConfiguration>::get
> utl::DefaultFontConfiguration::get
> ImplStyleData::SetStandardStyles
> ImplStyleData::ImplStyleData
> boost::make_shared<ImplStyleData>
> StyleSettings::StyleSettings
> ImplAllSettingsData::ImplAllSettingsData
> boost::make_shared<ImplAllSettingsData>
> AllSettings::AllSettings
> Application::InitSettings
> Application::GetSettings
> GtkInstance::AfterAppInit
> InitVCL
> ImplSVMain
> SVMain
> sal_main
> main
and Application::Main is only called after InitVCL.
(cherry picked from commit c828e3cc409077a1916911b8abf1d7b8dbb2078a)
Conflicts:
padmin/source/pamain.cxx
Change-Id: I1126e33f454a4ea35ef295cbd3f48429c473efb4
Reviewed-on: https://gerrit.libreoffice.org/8380
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'padmin')
-rw-r--r-- | padmin/source/pamain.cxx | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/padmin/source/pamain.cxx b/padmin/source/pamain.cxx index bbccadf032c1..b510f991cf6e 100644 --- a/padmin/source/pamain.cxx +++ b/padmin/source/pamain.cxx @@ -51,6 +51,11 @@ public: virtual sal_uInt16 Exception( sal_uInt16 nError ); static OUString ReadStringHook( const OUString& ); + +private: + virtual void Init() SAL_OVERRIDE; + + Reference< XComponentContext > xCtx_; }; void vclmain::createApplication() @@ -84,35 +89,13 @@ int MyApp::Main() EnableAutoHelpId(); - //------------------------------------------------- - // create the global service-manager - //------------------------------------------------- - Reference< XComponentContext > xCtx; - Reference< XMultiServiceFactory > xFactory; - try - { - xCtx = defaultBootstrap_InitialComponentContext(); - xFactory = Reference< XMultiServiceFactory >( xCtx->getServiceManager(), UNO_QUERY ); - if( xFactory.is() ) - setProcessServiceFactory( xFactory ); - } - catch( const com::sun::star::uno::Exception& ) - { - } - - if( ! xFactory.is() ) - { - fprintf( stderr, "Could not bootstrap UNO, installation must be in disorder. Exiting.\n" ); - exit( 1 ); - } - // Detect desktop environment - need to do this as early as possible com::sun::star::uno::setCurrentContext( new DesktopContext( com::sun::star::uno::getCurrentContext() ) ); // Create UCB (for backwards compatibility, in case some code still uses // plain createInstance w/o args directly to obtain an instance): - com::sun::star::ucb::UniversalContentBroker::create(xCtx); + com::sun::star::ucb::UniversalContentBroker::create(xCtx_); /* * Initialize the Java UNO AccessBridge if accessibility is turned on @@ -139,7 +122,7 @@ int MyApp::Main() */ try { - Reference<XComponent> xComp(xCtx, UNO_QUERY_THROW); + Reference<XComponent> xComp(xCtx_, UNO_QUERY_THROW); xComp->dispose(); } catch(...) @@ -149,4 +132,27 @@ int MyApp::Main() return EXIT_SUCCESS; } +void MyApp::Init() +{ + // create the global service-manager + + Reference< XMultiServiceFactory > xFactory; + try + { + xCtx_ = defaultBootstrap_InitialComponentContext(); + xFactory = Reference< XMultiServiceFactory >( xCtx_->getServiceManager(), UNO_QUERY ); + if( xFactory.is() ) + setProcessServiceFactory( xFactory ); + } + catch( const com::sun::star::uno::Exception& ) + { + } + + if( ! xFactory.is() ) + { + fprintf( stderr, "Could not bootstrap UNO, installation must be in disorder. Exiting.\n" ); + exit( 1 ); + } +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |