New branch 'feature/new-vcl-scheduler' available with the following commits: commit 7bf8afcf2eb37c7c0c43bcae077a9f189a7e0f84 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Tue Sep 13 11:03:08 2016 +0200
Round-robin invoked / started tasks And some simple round-robin to the task processing, so equal priority (auto) tasks won't always be scheduled, if there are multiple with the same priority. Currently breaks LO, which indicates dependencies in the same priority class, which must not exist! Change-Id: If84496bff68aec42d0fa63c2b7e05c3202f67b2c commit b2e123f9a22928d2e0cea8ceb4ae75ff5102c6dc Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Wed Aug 10 12:33:21 2016 +0200 Readd SAL_INFOs to dump the Scheduler handling Debug area name is "vcl.schedule". Conflicts: include/sal/log-areas.dox vcl/source/app/scheduler.cxx Change-Id: Ia1eab69e76671bd33ce3324c5eb058e4e00dfdd2 commit f701ea310606611fd7b80eac53481365ca06218d Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Wed Sep 14 18:17:18 2016 +0200 Don't poll busy documents via idle task Creates a very busy idle-loop, for non-task work like mail merge. Change-Id: If7be82e4675008f23e6f4f6be5c40df40a231a8b commit a1ecb280872c5487615558f8d140a380ef3e0d36 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Wed Sep 14 15:33:54 2016 +0200 Run Idle tasks immediatly There is really no reason to wait a millisecond for an idle. Change-Id: I7665d5f2e7d6ba3e01290a692bbc8e42c36b9986 commit 2798b797c9acec175bfdb658f63df2cd968e2d6e Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Wed Sep 14 13:48:02 2016 +0200 Change Idle to be a actually a Timer subclass Drops a lot of duplicated code and actually reflects the Scheduler handling of "idle" in the source code. Change-Id: I847592e92e86d15ab1cab168bf0e667322e48048 commit 102c41c2e429bee489334361536779aa298bc181 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Mon Sep 12 18:24:14 2016 +0200 Handle all main loop and task events Change-Id: I75ed5a38b0e24966dafcfdd2ea4cb8afc93a8a0c commit 5e4361e84607fc6d7623b31630505da7c934b945 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Wed Aug 10 12:00:53 2016 +0200 Reorganize Scheduler priority classes This is based on glibs classification of tasks, but while glib uses an int for more fine grained priority, we stay with our enum. 1. Timers start with DEFAULT priority, which directly corresponds with the previous HIGH priority 2. Idles start with DEFAULT_IDLE priority instead of the previous HIGH priority, so idle default becomes "really run when idle". As RESIZE and REPAINT are special, and the DEFAULTS are set, there is just one primary decision for the programmer: should my idle run before paint (AKA HIGH_IDLE)? If we really need a more fine-grained classification, we can add it later, or also switch to a real int. As a result, this drops many classifications from the code and drastically changes behaviour, AKA a mail merge from KDE is now as fast as Gtk+ again. Conflicts: cui/source/tabpages/macroass.cxx desktop/source/deployment/gui/dp_gui_dialog2.cxx include/vcl/scheduler.hxx sc/source/core/tool/dbdata.cxx sc/source/ui/formdlg/dwfunctr.cxx sc/source/ui/miscdlgs/anyrefdg.cxx sd/source/ui/dlg/dlgass.cxx sd/source/ui/slideshow/slideshowimpl.cxx svx/source/inc/eventhandler.hxx svx/source/sdr/overlay/overlaymanagerbuffered.cxx sw/source/uibase/docvw/srcedtw.cxx sw/source/uibase/utlui/unotools.cxx vcl/source/app/idle.cxx vcl/source/app/scheduler.cxx vcl/source/app/timer.cxx Change-Id: I498a73fd02d5fb6f5d7e9f742f3bce972de9b1f9 commit c43ebd2dc563a8d3ebc90e4181b6f3eec5c02c23 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Tue Sep 13 12:20:45 2016 +0200 Don't wait in Yield with pending events This re-introduces some functionality of commit 87199d3829257420429057336283c55be6ae7481 I'm not sure, if we really want to skip the wait on pendig events. Change-Id: Ie88c2945acb066e312bab7d0f5b2f3b525fa1c4c commit 71ce92d177a7f8c08c8051d0ef4f9e8ab0f00470 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Sun Jul 31 17:31:07 2016 +0200 Just schedule tasks, if timeout has ellapsed As the native main loop wakes up on new events and not just by timer timeouts, make sure there is really an ellapsed event. Probably we should just schedule events via the system timeout. At least this will prevent expensive re-scheduling. Conflicts: vcl/source/app/scheduler.cxx Change-Id: I248c9b8acb7df026295d10f256871b9fc8d39c07 commit 4255a5a4340bc7d106b976cfd2b805eda0295978 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Mon Sep 12 17:03:29 2016 +0200 Drop special idle handling Idles are just instant, mainly low-priority timers. So we'll just schedule by priority. This basically also reverts the following commit: commit 06d731428ef6cf93c7333e8228bfb6088853b52f Change-Id: I446eaea0077f45a5b7daa0aa06dcb80010ac0bd5 commit a8ea3f9957aae08276be4368d4435beab7e2e124 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Thu Sep 8 06:55:30 2016 +0200 Revert all SalYieldResult changes => bool All we want to know is, if any event was processed. Actually the result was never indicating, if a timeout was processed at all. Change-Id: Ia0b91b06dffb77af066f01838d8f9483523bf67d commit 604b7d3ea4306fd4ba147a890d944de3478034b5 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Sun Jul 31 16:35:49 2016 +0200 Don't update document stats for non-idle views This functionality should be merged into the DocumentTimerManager, which itself should run the different document idle tasks via seperate jobs instead of a single idle, if they don't depend on each other. As a workaround, this checks for the idle status of the view and won't run on busy documents. The idle is also changed to a timer, which sleeps for busy views. Change-Id: I185137ed3423ecaae0f7edb39018d26c4244d359 commit aee7cb1b3645abd9484071283a0330367b79031e Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Sat Jul 30 20:56:01 2016 +0200 Reuse scheduled task data Since scheduling is now done via existing ImplSchedulerData objects, keep used objects around to save new and delete calls. Change-Id: Id983f114438d2d8d05de698c7d068af360222d35 commit 435e21fe0330436e76e5e053d5d5d94df734a554 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Tue Sep 6 11:28:44 2016 +0200 Just walk the task list once per timeout This merges ImplSchedulerData::GetMostImportantTask into Scheduler::ProcessTaskScheduling and InitSystemTimer into Scheduler::ImplStartTimer. Walking can be optimized by sorting the list by the next expected scheduling time, when the special idle handling is dropped. Additionally one could implement per-priority queues to speed-up the walk even more. This basically reverts the following commits: commit 10a451e97992ce42db3cefa3bffb883f310767c9 commit 87199d3829257420429057336283c55be6ae7481 commit 1bd5e8b73d863cad6e42ea9619fc471a0dd8d14b commit 5bac7853a89b9b34d64334d6d77582c7cd79b4ee commit d3cdd7efca82130c2c42e3062b5ab244461ce15c Change-Id: Idfb698a6075e371bae7fa36d73ae88a2075cde01 commit 70c32da40347630d7d78ddb51c7c2ff890846103 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Tue Sep 6 10:44:05 2016 +0200 Convert bTimer => bIdle All other places already refer to being Idle, so change the Scheduler::ProcessTaskScheduling argument to bIdle and adapt all other scheduler-related functions. Change-Id: If5a605abbc3e620092127b65ada29f11215a0343 commit baeb99b53372e407126fd062ded2026b90190fda Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Tue Sep 6 08:27:08 2016 +0000 Always schedule with the same time No need to always update the time - scheduling should be fast! Change-Id: Ic4c01f5a5759ef4970f1385aab6ef93cd67f33b6 commit e7e76b8daa47e47e615bb6aa23c68f52725a8e12 Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Sat Jul 30 19:18:00 2016 +0200 Use mpSchedulerData for delete and active handling We define an active task to have a Scheduler::mpSchedulerData pointer. And if the ImplSchedulerData::mpScheduler pointer is empty, we can delete the task when scheduling. This simplifies the scheduling handling. Change-Id: I7aaddea7f5171b66b7fa309363fc546f97dcb981 commit 37ea282e14f03e69b707efc6d0ed7bcba952374b Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Wed Jul 20 10:54:30 2016 +0200 tdf#97087 GDB pretty print the Scheduler task list In addition to the GDB pretty printer, this annotates a lot more Timers and Idles. Change-Id: I5b93fab02161b23bb753e65ef92643a04fb0789c commit 1878d69b93f161a13736ef0cc6e7bef65a8764ef Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Wed Jul 20 10:45:52 2016 +0200 Update Python six to version 1.10.0 Change-Id: If3d6c7c18ffc19da2a4ccc118aa2a2e658f4a719 commit de1616607ee78cd2d5023d9d464b48fe6e975c0e Author: Jan-Marek Glogowski <glo...@fbihome.de> Date: Mon Sep 12 11:54:51 2016 +0200 Fix Ubuntu '--as-needed' build Change-Id: I92378dae4a515a587c897fff83b15d8e836b0aa2 _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits