embeddedobj/source/inc/oleembobj.hxx| 11 +++
embeddedobj/source/msole/oleembed.cxx |5 +++--
embeddedobj/source/msole/olepersist.cxx | 11 ---
3 files changed, 14 insertions(+), 13 deletions(-)
New commits:
commit 695986f7a61fd24b8c5fbb8c3afe0786293c72ed
Author: Mike Kaganski
AuthorDate: Mon Mar 18 22:14:31 2024 +0500
Commit: Mike Kaganski
CommitDate: Tue Mar 19 10:21:09 2024 +0500
Release the mutex when calling the OLE method
... which may need to be executed on a different thread.
Change-Id: Id9e4b86fd3eafa49139b21e3817aa1ee8aff3dba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164986
Tested-by: Jenkins
Reviewed-by: Mike Kaganski
diff --git a/embeddedobj/source/inc/oleembobj.hxx
b/embeddedobj/source/inc/oleembobj.hxx
index cf7c5ebe4ab4..983f242308cf 100644
--- a/embeddedobj/source/inc/oleembobj.hxx
+++ b/embeddedobj/source/inc/oleembobj.hxx
@@ -468,4 +468,15 @@ private:
osl::ResettableMutexGuard& m_guard;
};
+namespace
+{
+#if defined(_WIN32)
+template auto ExecUnlocked(Proc proc, osl::ResettableMutexGuard&
guard)
+{
+ClearedMutexArea area(guard);
+return proc();
+}
+#endif
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embeddedobj/source/msole/oleembed.cxx
b/embeddedobj/source/msole/oleembed.cxx
index 63d5f700b089..b946fed792c8 100644
--- a/embeddedobj/source/msole/oleembed.cxx
+++ b/embeddedobj/source/msole/oleembed.cxx
@@ -601,7 +601,7 @@ uno::Sequence< sal_Int32 > SAL_CALL
OleEmbeddedObject::getReachableStates()
}
// end wrapping related part
-::osl::MutexGuard aGuard( m_aMutex );
+::osl::ResettableMutexGuard aGuard( m_aMutex );
if ( m_bDisposed )
throw lang::DisposedException(); // TODO
@@ -620,7 +620,8 @@ uno::Sequence< sal_Int32 > SAL_CALL
OleEmbeddedObject::getReachableStates()
// the list of states can only be guessed based on standard verbs,
// since there is no way to detect what additional verbs do
-return GetReachableStatesList_Impl( m_pOleComponent->GetVerbList() );
+return GetReachableStatesList_Impl(
+ExecUnlocked([this] { return m_pOleComponent->GetVerbList(); },
aGuard));
}
else
#endif
diff --git a/embeddedobj/source/msole/olepersist.cxx
b/embeddedobj/source/msole/olepersist.cxx
index 381fc7b0d68c..e6af72fedccf 100644
--- a/embeddedobj/source/msole/olepersist.cxx
+++ b/embeddedobj/source/msole/olepersist.cxx
@@ -58,17 +58,6 @@
using namespace ::com::sun::star;
using namespace ::comphelper;
-namespace
-{
-#if defined(_WIN32)
-template auto ExecUnlocked(Proc proc, osl::ResettableMutexGuard&
guard)
-{
-ClearedMutexArea area(guard);
-return proc();
-}
-#endif
-}
-
bool KillFile_Impl( const OUString& aURL, const uno::Reference<
uno::XComponentContext >& xContext )
{