include/vcl/scheduler.hxx | 3 ++- vcl/source/app/scheduler.cxx | 6 ++++-- vcl/source/app/svapp.cxx | 6 +++--- 3 files changed, 9 insertions(+), 6 deletions(-)
New commits: commit 85e2390e880094d1c7d58a370a5dcbee1d47b847 Author: Michael Meeks <[email protected]> Date: Thu Mar 24 13:45:43 2016 +0000 vcl: improve timing determinism by avoiding low prio. idles. Change-Id: I7d47cddc239cfab98339648eca7596aa1f1a11a9 diff --git a/include/vcl/scheduler.hxx b/include/vcl/scheduler.hxx index 95303ee..a5f4059 100644 --- a/include/vcl/scheduler.hxx +++ b/include/vcl/scheduler.hxx @@ -93,7 +93,8 @@ public: // Process one pending Timer with highhest priority static void CallbackTaskScheduling( bool ignore ); /// Calculate minimum timeout - and return its value. - static sal_uInt64 CalculateMinimumTimeout( bool &bHasActiveIdles ); + static sal_uInt64 CalculateMinimumTimeout( bool &bHasActiveIdles, + bool bIgnoreLowPriority = false ); /// Process one pending task ahead of time with highest priority. static bool ProcessTaskScheduling( bool bTimerOnly ); /// Process all events until we are idle diff --git a/vcl/source/app/scheduler.cxx b/vcl/source/app/scheduler.cxx index 879ca42..cb4a911 100644 --- a/vcl/source/app/scheduler.cxx +++ b/vcl/source/app/scheduler.cxx @@ -174,7 +174,8 @@ bool Scheduler::ProcessTaskScheduling( bool bTimerOnly ) return false; } -sal_uInt64 Scheduler::CalculateMinimumTimeout( bool &bHasActiveIdles ) +sal_uInt64 Scheduler::CalculateMinimumTimeout( bool &bHasActiveIdles, + bool bIgnoreLowPriority ) { // process all pending Tasks // if bTimer True, only handle timer @@ -203,7 +204,8 @@ sal_uInt64 Scheduler::CalculateMinimumTimeout( bool &bHasActiveIdles ) pNext = pSchedulerData->mpNext; delete pSchedulerData; } - else + else if (!bIgnoreLowPriority || + pSchedulerData->mpScheduler->mePriority >= SchedulerPriority::DEFAULT_IDLE) { if (!pSchedulerData->mbInScheduler) { diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx index a18b91e..c9c2101 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 bool ImplYield(bool i_bWait, bool i_bAllEvents, sal_uLong const nReleased) +inline bool ImplYield(bool i_bWait, bool i_bAllEvents, sal_uLong const nReleased, bool bIgnoreLowPrio = false) { ImplSVData* pSVData = ImplGetSVData(); @@ -483,7 +483,7 @@ inline bool ImplYield(bool i_bWait, bool i_bAllEvents, sal_uLong const nReleased bool bHasActiveIdles = false; sal_uInt64 nMinTimeout = 0; if (nReleased == 0) // else thread doesn't have SolarMutex so avoid race - nMinTimeout = Scheduler::CalculateMinimumTimeout(bHasActiveIdles); + nMinTimeout = Scheduler::CalculateMinimumTimeout(bHasActiveIdles, bIgnoreLowPrio); // FIXME: should use returned value as param to DoYield (void)nMinTimeout; @@ -535,7 +535,7 @@ void Application::Reschedule( bool i_bAllEvents ) void Scheduler::ProcessEventsToIdle() { int nSanity = 100; - while(ImplYield(false, true, 0)) + while(ImplYield(false, true, 0, true)) { if (nSanity-- < 0) { _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
