Kaydet (Commit) ea3ce0b3 authored tarafından Michael Stahl's avatar Michael Stahl

tdf#99383 vcl: don't dispatch events from SolarMutexReleaser

Having SolarMutexReleaser effectively do Reschedule() on WNT and not on
other platforms doesn't seem such a good idea.  Let's try to restrict it
so that it still calls ImplSalYieldMutexAcquireWithWait() but no longer
dispatches messages, timers and idles.

(regression from 482c52e9)

Change-Id: I52a2c88e9c2473e35909bf270b9e3ae7acbe0d17
üst 7ecaf612
......@@ -517,8 +517,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 )
......
......@@ -646,7 +646,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 )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment