[Panel Containment] Explicitly bind visible on both the container and the applet
ClosedPublic

Authored by broulik on Dec 31 2016, 10:22 PM.

Details

Summary

While trying to fix a random plasmashell crash I was getting fairly often (and I hoped was fixed by David's last spacer fix) I found that the cause was actually in virtual desktop pager.

The virtual desktop pager is hidden when there's just one desktop and it will not update its models in this case to save resources. Back when I added this I already noticed that sometimes the pager (usually after one "open and close panelcontroller" cycle) still thought it was visible. It was even weirder than that, I found out that on teardown it suddenly thought it became visible. This had it populate its model which in turn spawned QML items, all of this whilst the panel was already in the process of destroying its children, leading to a crash.

Test Plan

Previously I could easily reproduce the crash:
start plasmashell
open panel controller
quickly open krunner and type kquitapp plasmashell
boom

No more, gosh, this was a weird one. Also verified that virtual desktop pager "enabled" property stays consistent.

Diff Detail

Repository
R119 Plasma Desktop
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
broulik updated this revision to Diff 9570.Dec 31 2016, 10:22 PM
broulik retitled this revision from to [Panel Containment] Explicitly bind visible on both the container and the applet.
broulik updated this object.
broulik edited the test plan for this revision. (Show Details)
broulik added a reviewer: Plasma.
broulik set the repository for this revision to R119 Plasma Desktop.
Restricted Application added a project: Plasma. · View Herald TranscriptDec 31 2016, 10:22 PM
Restricted Application added a subscriber: plasma-devel. · View Herald Transcript
hein accepted this revision.Jan 2 2017, 8:05 AM
hein added a reviewer: hein.
This revision is now accepted and ready to land.Jan 2 2017, 8:05 AM
This revision was automatically updated to reflect the committed changes.