diff options
author | Caolán McNamara <caolanm@redhat.com> | 2017-03-17 21:25:56 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2017-03-17 21:27:44 +0000 |
commit | 376ae93f488baab2957713f4fea72a42c91febf4 (patch) | |
tree | d5f2d5cd00ab6b9efc08095faac6ea42b8e78bf0 /canvas | |
parent | b165f0f9cc358e6127f69227fc3e4f6428fe50c7 (diff) |
ofz#887 support avoiding reading config
Change-Id: Ic7e0e65b15c7b6a01a10d6004230ad71a2d439d2
Diffstat (limited to 'canvas')
-rw-r--r-- | canvas/Library_canvasfactory.mk | 1 | ||||
-rw-r--r-- | canvas/source/factory/cf_service.cxx | 124 |
2 files changed, 65 insertions, 60 deletions
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. |