summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/app/svapp.cxx7
-rw-r--r--vcl/win/source/app/salinst.cxx5
2 files changed, 9 insertions, 3 deletions
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx
index a18b91eef04d..a5a01a16242f 100644
--- a/vcl/source/app/svapp.cxx
+++ b/vcl/source/app/svapp.cxx
@@ -515,8 +515,11 @@ inline bool ImplYield(bool i_bWait, bool i_bAllEvents, sal_uLong const nReleased
DBG_TESTSOLARMUTEX(); // must be locked on return from Yield
- // Process all Tasks
- Scheduler::ProcessTaskScheduling(eResult == SalYieldResult::EVENT);
+ if (nReleased == 0) // tdf#99383 don't run stuff from ReAcquireSolarMutex
+ {
+ // Process all Tasks
+ Scheduler::ProcessTaskScheduling(eResult == SalYieldResult::EVENT);
+ }
// flush lazy deleted objects
if( pSVData->maAppData.mnDispatchLevel == 0 )
diff --git a/vcl/win/source/app/salinst.cxx b/vcl/win/source/app/salinst.cxx
index 5cf6c3dd58ba..40e44d2faf39 100644
--- a/vcl/win/source/app/salinst.cxx
+++ b/vcl/win/source/app/salinst.cxx
@@ -696,7 +696,10 @@ SalYieldResult WinSalInstance::DoYield(bool bWait, bool bHandleAllCurrentEvents,
}
else
{
- eDidWork = ImplSalYield( bWait, bHandleAllCurrentEvents );
+ if (nReleased == 0) // tdf#99383 ReAcquireSolarMutex shouldn't Yield
+ {
+ eDidWork = ImplSalYield( bWait, bHandleAllCurrentEvents );
+ }
n = nCount;
while ( n )