ofz#887 support avoiding reading config
Change-Id: Ic7e0e65b15c7b6a01a10d6004230ad71a2d439d2
This commit is contained in:
@@ -29,6 +29,7 @@ $(eval $(call gb_Library_use_libraries,canvasfactory,\
|
|||||||
cppu \
|
cppu \
|
||||||
cppuhelper \
|
cppuhelper \
|
||||||
sal \
|
sal \
|
||||||
|
utl \
|
||||||
vcl \
|
vcl \
|
||||||
$(gb_UWINAPI) \
|
$(gb_UWINAPI) \
|
||||||
))
|
))
|
||||||
|
@@ -43,6 +43,7 @@
|
|||||||
#if HAVE_FEATURE_OPENGL
|
#if HAVE_FEATURE_OPENGL
|
||||||
#include <vcl/opengl/OpenGLWrapper.hxx>
|
#include <vcl/opengl/OpenGLWrapper.hxx>
|
||||||
#endif
|
#endif
|
||||||
|
#include <unotools/configmgr.hxx>
|
||||||
|
|
||||||
using namespace ::com::sun::star;
|
using namespace ::com::sun::star;
|
||||||
using namespace ::com::sun::star::uno;
|
using namespace ::com::sun::star::uno;
|
||||||
@@ -123,76 +124,79 @@ CanvasFactory::CanvasFactory( Reference<XComponentContext> const & xContext ) :
|
|||||||
m_bCacheHasUseAcceleratedEntry(),
|
m_bCacheHasUseAcceleratedEntry(),
|
||||||
m_bCacheHasUseAAEntry()
|
m_bCacheHasUseAAEntry()
|
||||||
{
|
{
|
||||||
try
|
if (!utl::ConfigManager::IsAvoidConfig())
|
||||||
{
|
{
|
||||||
// read out configuration for preferred services:
|
try
|
||||||
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 )
|
|
||||||
{
|
{
|
||||||
Reference<container::XNameAccess> xEntryNameAccess(
|
// read out configuration for preferred services:
|
||||||
xHierarchicalNameAccess->getByHierarchicalName(*pCurr),
|
Reference<lang::XMultiServiceFactory> xConfigProvider(
|
||||||
UNO_QUERY );
|
configuration::theDefaultProvider::get( m_xContext ) );
|
||||||
|
|
||||||
if( xEntryNameAccess.is() )
|
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;
|
Reference<container::XNameAccess> xEntryNameAccess(
|
||||||
if( (xEntryNameAccess->getByName("PreferredImplementations") >>= implementationList) )
|
xHierarchicalNameAccess->getByHierarchicalName(*pCurr),
|
||||||
|
UNO_QUERY );
|
||||||
|
|
||||||
|
if( xEntryNameAccess.is() )
|
||||||
{
|
{
|
||||||
m_aAvailableImplementations.push_back( std::make_pair(*pCurr,implementationList) );
|
Sequence<OUString> implementationList;
|
||||||
}
|
if( (xEntryNameAccess->getByName("PreferredImplementations") >>= implementationList) )
|
||||||
if( (xEntryNameAccess->getByName("AcceleratedImplementations") >>= implementationList) )
|
{
|
||||||
{
|
m_aAvailableImplementations.push_back( std::make_pair(*pCurr,implementationList) );
|
||||||
m_aAcceleratedImplementations.push_back( std::make_pair(*pCurr,implementationList) );
|
}
|
||||||
}
|
if( (xEntryNameAccess->getByName("AcceleratedImplementations") >>= implementationList) )
|
||||||
if( (xEntryNameAccess->getByName("AntialiasingImplementations") >>= implementationList) )
|
{
|
||||||
{
|
m_aAcceleratedImplementations.push_back( std::make_pair(*pCurr,implementationList) );
|
||||||
m_aAAImplementations.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
|
// Ugh. Looks like configuration is borked. Fake minimal
|
||||||
// setup.
|
// setup.
|
||||||
|
Reference in New Issue
Block a user