diff --git a/canvas/source/factory/cf_service.cxx b/canvas/source/factory/cf_service.cxx index f971df139f31abca08633aff771b81c23070bdf2..26be9d34b1c0eec492eb2b0b16b66411e4f2ef15 100644 --- a/canvas/source/factory/cf_service.cxx +++ b/canvas/source/factory/cf_service.cxx @@ -18,6 +18,7 @@ */ #include +#include #include #include @@ -30,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -447,13 +449,18 @@ Reference CanvasFactory::createInstanceWithArgumentsAndContext( OUString const & preferredOne, Sequence const & args, Reference const & xContext ) { - Reference xCanvas( - lookupAndUse( preferredOne, args, xContext ) ); - if(xCanvas.is()) - return xCanvas; + Reference xCanvas(lookupAndUse(preferredOne, args, xContext)); + if (!xCanvas.is()) + // last resort: try service name directly + xCanvas = use(preferredOne, args, xContext); - // last resort: try service name directly - return use( preferredOne, args, xContext ); + if (xCanvas.is()) + { + Reference xServiceName(xCanvas, uno::UNO_QUERY); + SAL_INFO("canvas", "using " << (xServiceName.is() ? xServiceName->getServiceName() + : OUString("(unknown)"))); + } + return xCanvas; } // XMultiServiceFactory