[Libreoffice-commits] .: desktop/inc desktop/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Mon Sep 24 08:45:26 PDT 2012


 desktop/inc/app.hxx                |    6 +++---
 desktop/source/app/app.cxx         |    2 +-
 desktop/source/app/appinit.cxx     |    9 +++++----
 desktop/source/app/sofficemain.cxx |    2 ++
 4 files changed, 11 insertions(+), 8 deletions(-)

New commits:
commit 2f14e2e67c58fe6948501d57a38cd0d2ad84dfff
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Sep 24 17:41:51 2012 +0200

    fdo#54385: Displaying help/version early on UNX requires service manager
    
    This regression was introduced with 6c6358a6822d3562b9b8c7668a7d60d6c644dfe8
    "Related fdo#53006: Do not instantiate service manager too early."
    
    Change-Id: If22ea3ac6474188bf0792246620e5c705a813445

diff --git a/desktop/inc/app.hxx b/desktop/inc/app.hxx
index b1577b2..7b8359d 100644
--- a/desktop/inc/app.hxx
+++ b/desktop/inc/app.hxx
@@ -136,11 +136,11 @@ class Desktop : public Application
         void                    SetSplashScreenText( const ::rtl::OUString& rText );
         void                    SetSplashScreenProgress( sal_Int32 );
 
-    private:
         // Bootstrap methods
-        static ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > CreateApplicationServiceManager();
-            // returns a non-null reference or throws an exception
+        static void             InitApplicationServiceManager();
+            // throws an exception upon failure
 
+    private:
         void                    RegisterServices();
         void                    DeregisterServices();
 
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index fad9908..0a13e56 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -600,7 +600,7 @@ void Desktop::Init()
     // something to enforce this gotcha
     try
     {
-        comphelper::setProcessServiceFactory(CreateApplicationServiceManager());
+        InitApplicationServiceManager();
     }
     catch (css::uno::Exception & e)
     {
diff --git a/desktop/source/app/appinit.cxx b/desktop/source/app/appinit.cxx
index 64a8829..367b77a 100644
--- a/desktop/source/app/appinit.cxx
+++ b/desktop/source/app/appinit.cxx
@@ -111,20 +111,21 @@ static void configureUcb()
 #endif // GNOME_VFS_ENABLED
 }
 
-Reference< XMultiServiceFactory > Desktop::CreateApplicationServiceManager()
+void Desktop::InitApplicationServiceManager()
 {
     RTL_LOGFILE_CONTEXT( aLog, "desktop (cd100003) ::createApplicationServiceManager" );
-
+    Reference<XMultiServiceFactory> sm;
 #ifdef ANDROID
     rtl::OUString aUnoRc( OUString( "file:///assets/program/unorc"  ) );
-    return Reference<XMultiServiceFactory>(
+    sm.set(
         cppu::defaultBootstrap_InitialComponentContext( aUnoRc )->getServiceManager(),
         UNO_QUERY_THROW);
 #else
-    return Reference<XMultiServiceFactory>(
+    sm.set(
         cppu::defaultBootstrap_InitialComponentContext()->getServiceManager(),
         UNO_QUERY_THROW);
 #endif
+    comphelper::setProcessServiceFactory(sm);
 }
 
 void Desktop::DestroyApplicationServiceManager( Reference< XMultiServiceFactory >& xSMgr )
diff --git a/desktop/source/app/sofficemain.cxx b/desktop/source/app/sofficemain.cxx
index e867601..9463b51 100755
--- a/desktop/source/app/sofficemain.cxx
+++ b/desktop/source/app/sofficemain.cxx
@@ -62,11 +62,13 @@ extern "C" int DESKTOP_DLLPUBLIC soffice_main()
     const desktop::CommandLineArgs& rCmdLineArgs = aDesktop.GetCommandLineArgs();
     if ( rCmdLineArgs.IsHelp() )
     {
+        desktop::Desktop::InitApplicationServiceManager();
         desktop::displayCmdlineHelp();
         return EXIT_SUCCESS;
     }
     else if ( rCmdLineArgs.IsVersion() )
     {
+        desktop::Desktop::InitApplicationServiceManager();
         desktop::displayVersion();
         return EXIT_SUCCESS;
     }


More information about the Libreoffice-commits mailing list