diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2024-04-07 21:54:15 +0500 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2024-04-07 21:54:15 +0500 |
commit | 87cfbf70399ea12a6c6d50fa009fc0e6ed3f7218 (patch) | |
tree | a0f688a4559fefc44f23bd7b40e7111ca5ee04f8 | |
parent | Reapply "Make sure we hold the solar mutex before trying to release it" (diff) | |
download | core-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.hxx | 11 | ||||
-rw-r--r-- | embeddedobj/source/msole/oleembed.cxx | 5 | ||||
-rw-r--r-- | embeddedobj/source/msole/olepersist.cxx | 11 |
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 ) { |