summaryrefslogtreecommitdiff
path: root/vcl/inc
diff options
context:
space:
mode:
authorJan-Marek Glogowski <glogow@fbihome.de>2018-09-16 19:17:31 +0000
committerJan-Marek Glogowski <glogow@fbihome.de>2018-09-24 14:12:58 +0200
commitd0bd1880f4edf6b5a1657e675aa10a6418003d99 (patch)
treef87a18f808620ded18dd08a02b909a7e241214d8 /vcl/inc
parentd4f871a859d969172bd1f8959e86f40993664ad5 (diff)
Scheduler: add per-priority Task lists
This way we don't have to search the whole list for a higher priority event, if an immediate Task is found. This probably helps bugs like tdf#119724 and tdf#119428. Change-Id: Ic5685193d1bedb6996cf46f0ee2cba42190ff7cc Reviewed-on: https://gerrit.libreoffice.org/60572 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
Diffstat (limited to 'vcl/inc')
-rw-r--r--vcl/inc/svdata.hxx6
1 files changed, 4 insertions, 2 deletions
diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx
index 6ef279586ea1..6df874abc74b 100644
--- a/vcl/inc/svdata.hxx
+++ b/vcl/inc/svdata.hxx
@@ -26,6 +26,7 @@
#include <unotools/options.hxx>
#include <vcl/svapp.hxx>
#include <vcl/window.hxx>
+#include <vcl/task.hxx>
#include <com/sun/star/lang/XComponent.hpp>
#include <com/sun/star/i18n/XCharacterClassification.hpp>
@@ -327,9 +328,10 @@ struct BlendFrameCache
struct ImplSchedulerContext
{
- ImplSchedulerData* mpFirstSchedulerData = nullptr; ///< list of all active tasks
- ImplSchedulerData* mpLastSchedulerData = nullptr; ///< last item of the mpFirstSchedulerData list
+ ImplSchedulerData* mpFirstSchedulerData[PRIO_COUNT] = { nullptr, }; ///< list of all active tasks per priority
+ ImplSchedulerData* mpLastSchedulerData[PRIO_COUNT] = { nullptr, }; ///< last item of each mpFirstSchedulerData list
ImplSchedulerData* mpSchedulerStack = nullptr; ///< stack of invoked tasks
+ ImplSchedulerData* mpSchedulerStackTop = nullptr; ///< top most stack entry to detect needed rescheduling during pop
SalTimer* mpSalTimer = nullptr; ///< interface to sal event loop / system timer
sal_uInt64 mnTimerStart = 0; ///< start time of the timer
sal_uInt64 mnTimerPeriod = SAL_MAX_UINT64; ///< current timer period