diff options
-rw-r--r-- | toolkit/source/awt/vclxtoolkit.cxx | 20 | ||||
-rw-r--r-- | vcl/source/app/svapp.cxx | 3 |
2 files changed, 22 insertions, 1 deletions
diff --git a/toolkit/source/awt/vclxtoolkit.cxx b/toolkit/source/awt/vclxtoolkit.cxx index 874515736437..642c636631dc 100644 --- a/toolkit/source/awt/vclxtoolkit.cxx +++ b/toolkit/source/awt/vclxtoolkit.cxx @@ -44,6 +44,7 @@ #include <com/sun/star/awt/XToolkitExperimental.hpp> #include <com/sun/star/awt/XMessageBoxFactory.hpp> +#include <cppuhelper/bootstrap.hxx> #include <cppuhelper/compbase2.hxx> #include <cppuhelper/interfacecontainer.hxx> #include <cppuhelper/supportsservice.hxx> @@ -595,6 +596,25 @@ static void SAL_CALL ToolkitWorkerFunction( void* pArgs ) { osl_setThreadName("VCLXToolkit VCL main thread"); + css::uno::Reference<css::lang::XMultiServiceFactory> xServiceManager; + try + { + xServiceManager = ::comphelper::getProcessServiceFactory(); + } + catch (const css::uno::DeploymentException&) + { + } + if (!xServiceManager.is()) + { + css::uno::Reference<css::uno::XComponentContext> xContext = + ::cppu::defaultBootstrap_InitialComponentContext(); + + xServiceManager = css::uno::Reference<css::lang::XMultiServiceFactory>( + xContext->getServiceManager(), css::uno::UNO_QUERY_THROW ); + // set global process service factory used by unotools config helpers + ::comphelper::setProcessServiceFactory( xServiceManager ); + } + VCLXToolkit * pTk = static_cast<VCLXToolkit *>(pArgs); bInitedByVCLToolkit = InitVCL(); if( bInitedByVCLToolkit ) diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx index 34bc5505404b..bf358735f56a 100644 --- a/vcl/source/app/svapp.cxx +++ b/vcl/source/app/svapp.cxx @@ -418,7 +418,8 @@ void Application::AcquireSolarMutex( sal_uLong nCount ) bool Application::IsInMain() { - return ImplGetSVData()->maAppData.mbInAppMain; + ImplSVData* pSVData = ImplGetSVData(); + return pSVData ? pSVData->maAppData.mbInAppMain : false; } bool Application::IsInExecute() |