From 36dd638c53188b7606484f31d6a4cd6170850083 Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Fri, 29 Nov 2013 23:03:37 +0100 Subject: vcl: check if AT is running before loading the library ... which should result in faster startup if it's disabled. Change-Id: I39774b0a56f186d08270c2f17b2b20a823f21dc2 (cherry picked from commit b44ed4c408d92f7a1a3f2390c056d518c137ddd0) --- vcl/source/app/svdata.cxx | 33 +++++++++++++++++++++++---------- vcl/win/source/window/salframe.cxx | 10 ++++++++++ 2 files changed, 33 insertions(+), 10 deletions(-) (limited to 'vcl') diff --git a/vcl/source/app/svdata.cxx b/vcl/source/app/svdata.cxx index 97116d47f9d2..aa58484fb872 100644 --- a/vcl/source/app/svdata.cxx +++ b/vcl/source/app/svdata.cxx @@ -297,6 +297,9 @@ com::sun::star::uno::Any AccessBridgeCurrentContext::getValueByName( const OUStr return ret; } +#ifdef _WIN32 +bool HasAtHook(); +#endif bool ImplInitAccessBridge(bool bAllowCancel, bool &rCancelled) { @@ -324,25 +327,35 @@ bool ImplInitAccessBridge(bool bAllowCancel, bool &rCancelled) { css::uno::Reference< XComponentContext > xContext(comphelper::getProcessComponentContext()); +#ifdef _WIN32 bool bTryIAcc2 = ( officecfg::Office::Common::Misc::ExperimentalMode::get( xContext ) && !getenv ("SAL_DISABLE_IACCESSIBLE2") ); if ( bTryIAcc2 ) // Windows only really { - try { - pSVData->mxAccessBridge - = css::accessibility::MSAAService::create(xContext); - SAL_INFO("vcl", "got IAccessible2 bridge"); - return true; - } catch (css::uno::DeploymentException & e) { - SAL_INFO( - "vcl", - "got no IAccessible2 bridge, \"" << e.Message - << "\", falling back to java"); + if (!HasAtHook() && !getenv("SAL_FORCE_IACCESSIBLE2")) + { + SAL_INFO("vcl", "Apparently no running AT -> " + "not enabling IAccessible2 integration"); + } + else + { + try { + pSVData->mxAccessBridge + = css::accessibility::MSAAService::create(xContext); + SAL_INFO("vcl", "got IAccessible2 bridge"); + return true; + } catch (css::uno::DeploymentException & e) { + SAL_INFO( + "vcl", + "got no IAccessible2 bridge, \"" << e.Message + << "\", falling back to java"); + } } } else SAL_INFO( "vcl", "IAccessible2 disabled, falling back to java" ); +#endif css::uno::Reference< XExtendedToolkit > xToolkit = css::uno::Reference< XExtendedToolkit >(Application::GetVCLToolkit(), UNO_QUERY); diff --git a/vcl/win/source/window/salframe.cxx b/vcl/win/source/window/salframe.cxx index 913d53967681..f7c30865002c 100644 --- a/vcl/win/source/window/salframe.cxx +++ b/vcl/win/source/window/salframe.cxx @@ -6257,4 +6257,14 @@ sal_Bool ImplWriteLastError( DWORD lastError, const char *szApiCall ) // ----------------------------------------------------------------------- +#ifdef _WIN32 +bool HasAtHook() +{ + BOOL bIsRunning = FALSE; + // pvParam must be BOOL + return SystemParametersInfo(SPI_GETSCREENREADER, 0, &bIsRunning, 0) + && bIsRunning; +} +#endif + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3