summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2024-04-07 21:54:15 +0500
committerMike Kaganski <mike.kaganski@collabora.com>2024-04-07 21:54:15 +0500
commit87cfbf70399ea12a6c6d50fa009fc0e6ed3f7218 (patch)
treea0f688a4559fefc44f23bd7b40e7111ca5ee04f8
parentReapply "Make sure we hold the solar mutex before trying to release it" (diff)
downloadcore-87cfbf70399ea12a6c6d50fa009fc0e6ed3f7218.tar.gz
core-87cfbf70399ea12a6c6d50fa009fc0e6ed3f7218.zip
Reapply "Release the mutex when calling the OLE method"
This reverts commit e40df1a2504935797454eafc08380b787e3629f2.
-rw-r--r--embeddedobj/source/inc/oleembobj.hxx11
-rw-r--r--embeddedobj/source/msole/oleembed.cxx5
-rw-r--r--embeddedobj/source/msole/olepersist.cxx11
3 files changed, 14 insertions, 13 deletions
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 <class Proc> 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 <class Proc> 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 )
{