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

Michael Meeks michael.meeks at collabora.com
Tue Sep 8 09:01:07 PDT 2015


 include/vcl/scheduler.hxx    |    2 +-
 vcl/source/app/idle.cxx      |    2 +-
 vcl/source/app/scheduler.cxx |   15 +++++++++++----
 3 files changed, 13 insertions(+), 6 deletions(-)

New commits:
commit 5bac7853a89b9b34d64334d6d77582c7cd79b4ee
Author: Michael Meeks <michael.meeks at collabora.com>
Date:   Tue Sep 8 16:58:32 2015 +0100

    Ensure the scheduler can set longer timeouts.
    
    Regression from: 6d64d2f38d9f6c2f54e05675ecd0709eabf6d8ca.
    
    Also fix the low priority idle min timeout to 5ms.
    
    Change-Id: I26a6e89ef7fa173e64ee34f7a500157ba82b7198

diff --git a/include/vcl/scheduler.hxx b/include/vcl/scheduler.hxx
index 612bd08..a197cbc 100644
--- a/include/vcl/scheduler.hxx
+++ b/include/vcl/scheduler.hxx
@@ -64,7 +64,7 @@ protected:
     static const sal_uInt64 ImmediateTimeoutMs = 1;
     static const sal_uInt64 MaximumTimeoutMs = SAL_MAX_UINT64;
 
-    static void ImplStartTimer(sal_uInt64 nMS);
+    static void ImplStartTimer(sal_uInt64 nMS, bool bForce = false);
 
     friend struct ImplSchedulerData;
     virtual void SetDeletionFlags();
diff --git a/vcl/source/app/idle.cxx b/vcl/source/app/idle.cxx
index 6929d62..dcf11b2 100644
--- a/vcl/source/app/idle.cxx
+++ b/vcl/source/app/idle.cxx
@@ -65,7 +65,7 @@ sal_uInt64 Idle::UpdateMinPeriod( sal_uInt64 nMinPeriod, sal_uInt64 /* nTime */
         break;
     default:
         // FIXME: tdf#92036 workaround, I should be 1 too - wait 5ms
-        if (nMinPeriod > 5)
+        if (nMinPeriod < 5)
             nMinPeriod = 5;
         break;
     }
diff --git a/vcl/source/app/scheduler.cxx b/vcl/source/app/scheduler.cxx
index b8849a1..c4fb701 100644
--- a/vcl/source/app/scheduler.cxx
+++ b/vcl/source/app/scheduler.cxx
@@ -104,15 +104,22 @@ void Scheduler::ImplDeInitScheduler()
     pSVData->mpSalTimer = 0;
 }
 
-void Scheduler::ImplStartTimer(sal_uInt64 nMS)
+/**
+ * Start a new timer if we need to for @nMS duration.
+ *
+ * if this is longer than the existing duration we're
+ * waiting for, do nothing - unless @bForce - which means
+ * to reset the minimum period; used by the scheduled itself.
+ */
+void Scheduler::ImplStartTimer(sal_uInt64 nMS, bool bForce)
 {
     ImplSVData* pSVData = ImplGetSVData();
     InitSystemTimer(pSVData);
 
     // Update timeout only when not in timer handler and
     // only if smaller timeout, to avoid skipping.
-    if (!pSVData->mnUpdateStack &&
-        nMS < pSVData->mnTimerPeriod)
+    if (bForce || (!pSVData->mnUpdateStack &&
+                   nMS < pSVData->mnTimerPeriod))
     {
         pSVData->mnTimerPeriod = nMS;
         pSVData->mpSalTimer->Start(nMS);
@@ -198,7 +205,7 @@ void Scheduler::ProcessTaskScheduling( bool bTimer )
     }
     else
     {
-        Scheduler::ImplStartTimer(nMinPeriod);
+        Scheduler::ImplStartTimer(nMinPeriod, true);
     }
     pSVData->mnUpdateStack--;
 }


More information about the Libreoffice-commits mailing list