diff options
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/app/svapp.cxx | 7 | ||||
-rw-r--r-- | vcl/win/source/app/salinst.cxx | 5 |
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 ) |