diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2020-01-10 17:23:44 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2020-01-13 23:03:02 +0100 |
commit | 974ea67a7c345a8be98c5aaa59baf9b07959b708 (patch) | |
tree | f0d6b6b993e26764806e7e32b684ffd7466ac2db /vcl/source/app/svmain.cxx | |
parent | 76a8746ea40965547c3d0fd9d56a8649f26ef756 (diff) |
tdf#129930: Dispose SystemClipboard service early enough
At least on Windows, the related
CMtaOleClipboard::m_hClipboardChangedNotifierThread thread would otherwise still
run during cppuhelper::ServiceManager::disposing (but could try to create other
UNO services, which then throws a DeploymentException).
(There is also a GetSystemPrimarySelection similar to GetSystemClipboard in
include/vcl/transfer.hxx, which might or might not turn out to have a similar
issue.)
Change-Id: Ia64e708cf0578e3a127c1a56fbace577ecf4ee1f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86558
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'vcl/source/app/svmain.cxx')
-rw-r--r-- | vcl/source/app/svmain.cxx | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/vcl/source/app/svmain.cxx b/vcl/source/app/svmain.cxx index ace085e89632..bfa5279ca4ca 100644 --- a/vcl/source/app/svmain.cxx +++ b/vcl/source/app/svmain.cxx @@ -484,6 +484,15 @@ void DeInitVCL() pSVData->maCtrlData.mpDisclosureMinus.reset(); pSVData->mpDefaultWin.disposeAndClear(); +#if defined _WIN32 + // See GetSystemClipboard (vcl/source/treelist/transfer2.cxx): + if (auto const comp = css::uno::Reference<css::lang::XComponent>( + pSVData->m_xSystemClipboard, css::uno::UNO_QUERY)) + { + comp->dispose(); + } +#endif + #ifndef NDEBUG DbgGUIDeInitSolarMutexCheck(); #endif |