diff options
-rw-r--r-- | uui/source/iahndl.cxx | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/uui/source/iahndl.cxx b/uui/source/iahndl.cxx index f03372de3f54..59f62217c6ac 100644 --- a/uui/source/iahndl.cxx +++ b/uui/source/iahndl.cxx @@ -172,7 +172,11 @@ UUIInteractionHelper::handleRequest( HandleData aHD(rRequest); Link<void*,void> aLink(&aHD,handlerequest); Application::PostUserEvent(aLink,this); + comphelper::SolarMutex& rSolarMutex = Application::GetSolarMutex(); + sal_uInt32 nLockCount = (rSolarMutex.IsCurrentThread()) ? rSolarMutex.release(true) : 0; aHD.wait(); + if (nLockCount) + rSolarMutex.acquire(nLockCount); return aHD.bHandled; } else @@ -223,7 +227,11 @@ UUIInteractionHelper::getStringFromRequest( HandleData aHD(rRequest); Link<void*,void> aLink(&aHD,getstringfromrequest); Application::PostUserEvent(aLink,this); + comphelper::SolarMutex& rSolarMutex = Application::GetSolarMutex(); + sal_uInt32 nLockCount = (rSolarMutex.IsCurrentThread()) ? rSolarMutex.release(true) : 0; aHD.wait(); + if (nLockCount) + rSolarMutex.acquire(nLockCount); return aHD.m_aResult; } else |