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 ...@@ -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 DBG_TESTSOLARMUTEX(); // must be locked on return from Yield
// Process all Tasks if (nReleased == 0) // tdf#99383 don't run stuff from ReAcquireSolarMutex
Scheduler::ProcessTaskScheduling(eResult == SalYieldResult::EVENT); {
// Process all Tasks
Scheduler::ProcessTaskScheduling(eResult == SalYieldResult::EVENT);
}
// flush lazy deleted objects // flush lazy deleted objects
if( pSVData->maAppData.mnDispatchLevel == 0 ) if( pSVData->maAppData.mnDispatchLevel == 0 )
......
...@@ -646,7 +646,10 @@ SalYieldResult WinSalInstance::DoYield(bool bWait, bool bHandleAllCurrentEvents, ...@@ -646,7 +646,10 @@ SalYieldResult WinSalInstance::DoYield(bool bWait, bool bHandleAllCurrentEvents,
} }
else else
{ {
eDidWork = ImplSalYield( bWait, bHandleAllCurrentEvents ); if (nReleased == 0) // tdf#99383 ReAcquireSolarMutex shouldn't Yield
{
eDidWork = ImplSalYield( bWait, bHandleAllCurrentEvents );
}
n = nCount; n = nCount;
while ( n ) 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