[Libreoffice-commits] core.git: canvas/Library_canvasfactory.mk canvas/source

Caolán McNamara caolanm at redhat.com
Fri Mar 17 21:28:10 UTC 2017


 canvas/Library_canvasfactory.mk      |    1 
 canvas/source/factory/cf_service.cxx |  124 ++++++++++++++++++-----------------
 2 files changed, 65 insertions(+), 60 deletions(-)

New commits:
commit 376ae93f488baab2957713f4fea72a42c91febf4
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Mar 17 21:25:56 2017 +0000

    ofz#887 support avoiding reading config
    
    Change-Id: Ic7e0e65b15c7b6a01a10d6004230ad71a2d439d2

diff --git a/canvas/Library_canvasfactory.mk b/canvas/Library_canvasfactory.mk
index d3992fcc84d5..8f7f606a04d2 100644
--- a/canvas/Library_canvasfactory.mk
+++ b/canvas/Library_canvasfactory.mk
@@ -29,6 +29,7 @@ $(eval $(call gb_Library_use_libraries,canvasfactory,\
 	cppu \
 	cppuhelper \
 	sal \
+	utl \
 	vcl \
 	$(gb_UWINAPI) \
 ))
diff --git a/canvas/source/factory/cf_service.cxx b/canvas/source/factory/cf_service.cxx
index e0fc9e9448f5..c0f57e906b16 100644
--- a/canvas/source/factory/cf_service.cxx
+++ b/canvas/source/factory/cf_service.cxx
@@ -43,6 +43,7 @@
 #if HAVE_FEATURE_OPENGL
 #include <vcl/opengl/OpenGLWrapper.hxx>
 #endif
+#include <unotools/configmgr.hxx>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::uno;
@@ -123,76 +124,79 @@ CanvasFactory::CanvasFactory( Reference<XComponentContext> const & xContext ) :
     m_bCacheHasUseAcceleratedEntry(),
     m_bCacheHasUseAAEntry()
 {
-    try
+    if (!utl::ConfigManager::IsAvoidConfig())
     {
-        // read out configuration for preferred services:
-        Reference<lang::XMultiServiceFactory> xConfigProvider(
-            configuration::theDefaultProvider::get( m_xContext ) );
-
-        Any propValue(
-            Any( beans::PropertyValue(
-                         "nodepath", -1,
-                         Any( OUString("/org.openoffice.Office.Canvas") ),
-                         beans::PropertyState_DIRECT_VALUE ) ) );
-
-        m_xCanvasConfigNameAccess.set(
-            xConfigProvider->createInstanceWithArguments(
-                "com.sun.star.configuration.ConfigurationAccess",
-                Sequence<Any>( &propValue, 1 ) ),
-            UNO_QUERY_THROW );
-
-        propValue <<=
-            beans::PropertyValue(
-                "nodepath", -1,
-                Any( OUString("/org.openoffice.Office.Canvas/CanvasServiceList") ),
-                beans::PropertyState_DIRECT_VALUE );
-
-        Reference<container::XNameAccess> xNameAccess(
-            xConfigProvider->createInstanceWithArguments(
-                "com.sun.star.configuration.ConfigurationAccess",
-                Sequence<Any>( &propValue, 1 ) ), UNO_QUERY_THROW );
-        Reference<container::XHierarchicalNameAccess> xHierarchicalNameAccess(
-            xNameAccess, UNO_QUERY_THROW);
-
-        Sequence<OUString> serviceNames = xNameAccess->getElementNames();
-        const OUString* pCurr = serviceNames.getConstArray();
-        const OUString* const pEnd = pCurr + serviceNames.getLength();
-        while( pCurr != pEnd )
+        try
         {
-            Reference<container::XNameAccess> xEntryNameAccess(
-                xHierarchicalNameAccess->getByHierarchicalName(*pCurr),
-                UNO_QUERY );
-
-            if( xEntryNameAccess.is() )
+            // read out configuration for preferred services:
+            Reference<lang::XMultiServiceFactory> xConfigProvider(
+                configuration::theDefaultProvider::get( m_xContext ) );
+
+            Any propValue(
+                Any( beans::PropertyValue(
+                             "nodepath", -1,
+                             Any( OUString("/org.openoffice.Office.Canvas") ),
+                             beans::PropertyState_DIRECT_VALUE ) ) );
+
+            m_xCanvasConfigNameAccess.set(
+                xConfigProvider->createInstanceWithArguments(
+                    "com.sun.star.configuration.ConfigurationAccess",
+                    Sequence<Any>( &propValue, 1 ) ),
+                UNO_QUERY_THROW );
+
+            propValue <<=
+                beans::PropertyValue(
+                    "nodepath", -1,
+                    Any( OUString("/org.openoffice.Office.Canvas/CanvasServiceList") ),
+                    beans::PropertyState_DIRECT_VALUE );
+
+            Reference<container::XNameAccess> xNameAccess(
+                xConfigProvider->createInstanceWithArguments(
+                    "com.sun.star.configuration.ConfigurationAccess",
+                    Sequence<Any>( &propValue, 1 ) ), UNO_QUERY_THROW );
+            Reference<container::XHierarchicalNameAccess> xHierarchicalNameAccess(
+                xNameAccess, UNO_QUERY_THROW);
+
+            Sequence<OUString> serviceNames = xNameAccess->getElementNames();
+            const OUString* pCurr = serviceNames.getConstArray();
+            const OUString* const pEnd = pCurr + serviceNames.getLength();
+            while( pCurr != pEnd )
             {
-                Sequence<OUString> implementationList;
-                if( (xEntryNameAccess->getByName("PreferredImplementations") >>= implementationList) )
-                {
-                    m_aAvailableImplementations.push_back( std::make_pair(*pCurr,implementationList) );
-                }
-                if( (xEntryNameAccess->getByName("AcceleratedImplementations") >>= implementationList) )
-                {
-                    m_aAcceleratedImplementations.push_back( std::make_pair(*pCurr,implementationList) );
-                }
-                if( (xEntryNameAccess->getByName("AntialiasingImplementations") >>= implementationList) )
+                Reference<container::XNameAccess> xEntryNameAccess(
+                    xHierarchicalNameAccess->getByHierarchicalName(*pCurr),
+                    UNO_QUERY );
+
+                if( xEntryNameAccess.is() )
                 {
-                    m_aAAImplementations.push_back( std::make_pair(*pCurr,implementationList) );
+                    Sequence<OUString> implementationList;
+                    if( (xEntryNameAccess->getByName("PreferredImplementations") >>= implementationList) )
+                    {
+                        m_aAvailableImplementations.push_back( std::make_pair(*pCurr,implementationList) );
+                    }
+                    if( (xEntryNameAccess->getByName("AcceleratedImplementations") >>= implementationList) )
+                    {
+                        m_aAcceleratedImplementations.push_back( std::make_pair(*pCurr,implementationList) );
+                    }
+                    if( (xEntryNameAccess->getByName("AntialiasingImplementations") >>= implementationList) )
+                    {
+                        m_aAAImplementations.push_back( std::make_pair(*pCurr,implementationList) );
+                    }
+
                 }
 
+                ++pCurr;
             }
-
-            ++pCurr;
         }
-    }
-    catch (const RuntimeException &)
-    {
-        throw;
-    }
-    catch (const Exception&)
-    {
+        catch (const RuntimeException &)
+        {
+            throw;
+        }
+        catch (const Exception&)
+        {
+        }
     }
 
-    if( m_aAvailableImplementations.empty() )
+    if (m_aAvailableImplementations.empty())
     {
         // Ugh. Looks like configuration is borked. Fake minimal
         // setup.


More information about the Libreoffice-commits mailing list