[Libreoffice-commits] core.git: Branch 'libreoffice-5-1' - vcl/source vcl/win

Michael Stahl mstahl at redhat.com
Tue May 17 07:16:47 UTC 2016


 vcl/source/app/svapp.cxx       |    7 +++++--
 vcl/win/source/app/salinst.cxx |    5 ++++-
 2 files changed, 9 insertions(+), 3 deletions(-)

New commits:
commit ea2c3f47682b79319d5ccaade4226f45aeec7369
Author: Michael Stahl <mstahl at redhat.com>
Date:   Tue May 3 17:17:52 2016 +0200

    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 482c52e91fe41a52e68827e9bf64a9736427d517)
    
    Change-Id: I52a2c88e9c2473e35909bf270b9e3ae7acbe0d17
    (cherry picked from commit ea3ce0b3073c72f474365e438ddabd19de915b76)
    Reviewed-on: https://gerrit.libreoffice.org/24623
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>

diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx
index a18b91e..a5a01a1 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 5cf6c3d..40e44d2 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 )


More information about the Libreoffice-commits mailing list