[QmlObjectIncubationController] Don't call incubate() while already incubating

Authored by broulik on Feb 15 2018, 9:31 AM.


Group Reviewers

During incubation we're still getting incubatingObjectCountChanged at which point we'd also call incubate again, leading to tens of incubate calls nested within each other leading to blockage and significant slowdowns.

Test Plan

This saves one second(!) of Plasma startup time for me, bringing it down from 3.5s to 2.5s for one 4K screen from plasmashell start till panel is up, measured scientifically accurate with a stopwatch.

This also cuts first time opening of Plasma popups in half. Calendar shows up significantly quicker, previously taking over a second, now to just under half a second. Kickoff also takes 300ms instead of 600ms on first invocation for me.

Diff Detail

R242 Plasma Framework (Library)
Lint Skipped
Unit Tests Skipped
broulik created this revision.Feb 15 2018, 9:31 AM
Restricted Application added projects: Plasma, Frameworks. · View Herald TranscriptFeb 15 2018, 9:31 AM
Restricted Application added subscribers: Frameworks, plasma-devel. · View Herald Transcript
broulik requested review of this revision.Feb 15 2018, 9:31 AM

Also measured scientifically accurate with a stopwatch
2:34 minutes in callgrind wihtout the patch. I refs: 10,827,698,978
2:20 minutes in callgrind with the patch. I refs: 10,668,473,812


mart accepted this revision.Feb 15 2018, 11:12 AM
This revision is now accepted and ready to land.Feb 15 2018, 11:12 AM
broulik abandoned this revision.Feb 15 2018, 11:52 AM

Superseded by D10536