Don't update decoration when ServerSideDecoration gets destroyed and ShellClient is unmapped
ClosedPublic

Authored by graesslin on May 19 2016, 2:42 PM.

Details

Summary

Most likely the window is in the process of getting destroyed. In that
case the following destroy of the Surface is also going to destroy the
decoration.

This was causing an interesting effect with the QQuickRenderControl used
by Aurorae. When getting destroyed it ensures that all posted events get
processed. This includes the destroy of the Surface which entered
ShellClient::destroyClient which again destroyed the decoration. In other
words a recursive destroy which ended with wonderful crashers due to
double deletions.

If the window is not unmapped this might still cause problems: more
testing needed.

Diff Detail

Repository
R108 KWin
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
graesslin updated this revision to Diff 3887.May 19 2016, 2:42 PM
graesslin retitled this revision from to Don't update decoration when ServerSideDecoration gets destroyed and ShellClient is unmapped.
graesslin updated this object.
graesslin edited the test plan for this revision. (Show Details)
graesslin added a reviewer: Plasma.
Restricted Application added a project: Plasma. · View Herald TranscriptMay 19 2016, 2:42 PM
Restricted Application added a subscriber: plasma-devel. · View Herald Transcript
mart accepted this revision.May 19 2016, 2:48 PM
mart added a reviewer: mart.
This revision is now accepted and ready to land.May 19 2016, 2:48 PM
graesslin updated this revision to Diff 3888.May 19 2016, 2:53 PM
graesslin edited edge metadata.

Also protect the other way around if first ShellSurface, then ServerSideDeco is destroyed

This revision was automatically updated to reflect the committed changes.