summaryrefslogtreecommitdiff
path: root/canvas
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-03-17 21:25:56 +0000
committerCaolán McNamara <caolanm@redhat.com>2017-03-17 21:27:44 +0000
commit376ae93f488baab2957713f4fea72a42c91febf4 (patch)
treed5f2d5cd00ab6b9efc08095faac6ea42b8e78bf0 /canvas
parentb165f0f9cc358e6127f69227fc3e4f6428fe50c7 (diff)
ofz#887 support avoiding reading config
Change-Id: Ic7e0e65b15c7b6a01a10d6004230ad71a2d439d2
Diffstat (limited to 'canvas')
-rw-r--r--canvas/Library_canvasfactory.mk1
-rw-r--r--canvas/source/factory/cf_service.cxx124
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.