[Libreoffice-commits] core.git: vcl/source

Michael Meeks michael.meeks at collabora.com
Wed Feb 24 09:40:30 UTC 2016


 vcl/source/app/scheduler.cxx |   14 --------------
 vcl/source/app/svapp.cxx     |   18 +++++++++++++++++-
 2 files changed, 17 insertions(+), 15 deletions(-)

New commits:
commit b952aaacb1a6ef628226ef2699fac9fab936f20b
Author: Michael Meeks <michael.meeks at collabora.com>
Date:   Thu Feb 18 21:18:28 2016 +0000

    Ensure processEventsToIdle process events (including from the OS) until idle.
    
    Change-Id: I9578849b0e78af15ddeb1e6495a48ccfb3f1c44a
    Reviewed-on: https://gerrit.libreoffice.org/22651
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Michael Meeks <michael.meeks at collabora.com>

diff --git a/vcl/source/app/scheduler.cxx b/vcl/source/app/scheduler.cxx
index e5121d7..15a3891 100644
--- a/vcl/source/app/scheduler.cxx
+++ b/vcl/source/app/scheduler.cxx
@@ -182,20 +182,6 @@ bool Scheduler::ProcessTaskScheduling( bool bTimerOnly )
         return false;
 }
 
-void Scheduler::ProcessEventsToIdle()
-{
-    // FIXME: really we should process incoming OS events too ...
-    int nSanity = 1000;
-    while (Scheduler::ProcessTaskScheduling(false))
-    {
-        if (nSanity-- < 0)
-        {
-            SAL_WARN("vcl.schedule", "Unexpected volume of events to process");
-            break;
-        }
-    }
-}
-
 sal_uInt64 Scheduler::CalculateMinimumTimeout( bool &bHasActiveIdles )
 {
     // process all pending Tasks
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx
index 10ad441..b70ea35 100644
--- a/vcl/source/app/svapp.cxx
+++ b/vcl/source/app/svapp.cxx
@@ -473,7 +473,7 @@ void Application::Execute()
     pSVData->maAppData.mbInAppExecute = false;
 }
 
-inline void ImplYield(bool i_bWait, bool i_bAllEvents, sal_uLong const nReleased)
+inline bool ImplYield(bool i_bWait, bool i_bAllEvents, sal_uLong const nReleased)
 {
     ImplSVData* pSVData = ImplGetSVData();
 
@@ -523,6 +523,8 @@ inline void ImplYield(bool i_bWait, bool i_bAllEvents, sal_uLong const nReleased
         vcl::LazyDelete::flush();
 
     SAL_INFO("vcl.schedule", "Leave ImplYield");
+
+    return bHasActiveIdles || eResult == SalYieldResult::EVENT;
 }
 
 void Application::Reschedule( bool i_bAllEvents )
@@ -530,6 +532,20 @@ void Application::Reschedule( bool i_bAllEvents )
     ImplYield(false, i_bAllEvents, 0);
 }
 
+void Scheduler::ProcessEventsToIdle()
+{
+    int nSanity = 1000;
+    while(Scheduler::ProcessTaskScheduling(false) ||
+          ImplYield(false, false, 0))
+    {
+        if (nSanity-- < 0)
+        {
+            SAL_WARN("vcl.schedule", "Unexpected volume of events to process");
+            break;
+        }
+    }
+}
+
 void Application::Yield()
 {
     ImplYield(true, false, 0);


More information about the Libreoffice-commits mailing list