[libkwineffects] Don't enable painting for windows that are not kept alive
ClosedPublic

Authored by zzag on Oct 31 2018, 1:07 PM.

Details

Summary

862bf0f153255d4e3c36d862e718f3328d683d3e introduced a regression(sorry
for that): if you close a confirmation dialog(with the Scale effect and the
Dialog Parent effect being enabled), the main window(s) will flicker.

That flickering happens because the C++ version of the Scale effect and
AnimationEffect unref deleted windows in different places. AnimationEffect
unrefs deleted windows in prePaintScreen, which btw is not the best
place to do that. The C++ version unrefed windows in postPaintScreen.

So, when the Scale effect has finished animating the main windows, it
will unref them, but windowDeleted signal won't be emitted immediately.
Which means that the Dialog Parent won't be able to delete corresponding
animations on its side and main windows will be painted for a single
frame.

This change addresses flickering by adjusting prePaintWindow in
AnimationEffect so deleted windows won't be painted if none of
animations keeps them alive.

Test Plan

(make sure that both the scale and the dialog parent effect are enabled)

  • Go to System Settings > Application Style > Window Decorations;
  • Select a decoration that is different from the current;
  • Close the system settings window (don't click "Apply" button);
  • When a dialog is shown, click "Discard" or "Apply" button.

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.
zzag created this revision.Oct 31 2018, 1:07 PM
Restricted Application added a project: KWin. · View Herald TranscriptOct 31 2018, 1:07 PM
Restricted Application added a subscriber: kwin. · View Herald Transcript
zzag requested review of this revision.Oct 31 2018, 1:07 PM
zzag edited the summary of this revision. (Show Details)Oct 31 2018, 1:09 PM
zzag edited the test plan for this revision. (Show Details)
davidedmundson accepted this revision.Oct 31 2018, 1:26 PM
This revision is now accepted and ready to land.Oct 31 2018, 1:26 PM
This revision was automatically updated to reflect the committed changes.