Merging new VCL scheduler feature branch

Jan-Marek Glogowski glogow at
Mon Oct 24 14:20:09 UTC 2016

Hi everybody,

I've updated and fixed the feature branch and I'm confident enough to
merge it :-)

Last build is almost successful
(, except that I had three
JUnit failures on Windows for my last three builds, which I couldn't
reproduce locally.

I'll just quote my mail from last month.

Am 16.09.2016 um 23:49 schrieb Jan-Marek Glogowski:
> This fixes my mail merge performance problem since the 5.0 merge of idle
> job handling.
> It completely drops the idea of separated idle and timer handling and
> drops a lot of special handling and workarounds for problems in the
> original code, but keeps the Idle class for convenience. I tried to list
> all the revert commit ids and started to test the original bugs.
> Everything is just scheduled by priority and Idles now get a very low
> one per default, while they previously had the same one then timers.
> Additionally it drops the 1ms lag for tasks, which actually adds up, as
> idle tasks weren't instantly scheduled.
> I already fixed the two most obvious busy loop bugs in Writer with
> workarounds for the general idle job handler and the statistics
> collector. Instead of polling for work I would like to switch these to
> be enabled on demand, but that'll definitely take more work. Currently
> they are converted to timers, which check for work every few seconds,
> then should switch to idle - ok 0ms timeouts, until all work is processed.

The last patch is just a hack. Quite probably setting the document to
the busy state should "simply" disable the DocumentTimerManager, also in
regard to SwLayIdle::DoIdleJob / SwLayIdle::SwLayIdle /
SwViewShell::LayoutIdle. This feels duplicated, but seems quite hard to

> I tried to simplify the priority groups to make it easier to select the
> correct one. There are still some suspicions HIGHEST ones. I had to guess
> the new dependencies from the original priority of the idles, but I'm
> quite sure there is some missing stuff. I would like to get some kind of
> annotations to be able to build a priority tree of all of them for a
> better overview.
> It would be great to get feedback from people of all other platforms /
> VCL backends.
> Thanks for your comments and feedback
> Jan-Marek
> P.S. it adds a VCL python GDB script, which can be used to dump the list
> of currently scheduled tasks.
> P.P.S. naming is sill a mess. Sometimes it's task, sometimes event. The
> scheduler class is actually the base class for the timers and idles and
> should be renamed Event or Task.

More information about the LibreOffice mailing list