summaryrefslogtreecommitdiff
path: root/vcl/source/app/svmain.cxx
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2020-01-10 17:23:44 +0100
committerStephan Bergmann <sbergman@redhat.com>2020-01-13 23:03:02 +0100
commit974ea67a7c345a8be98c5aaa59baf9b07959b708 (patch)
treef0d6b6b993e26764806e7e32b684ffd7466ac2db /vcl/source/app/svmain.cxx
parent76a8746ea40965547c3d0fd9d56a8649f26ef756 (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.cxx9
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