kwin/libkwineffects
Vlad Zagorodniy 1b7cad95c7 [libkwineffects] Don't enable painting for windows that are not kept alive
Summary:
862bf0f153 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.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D16542
2018-10-31 15:49:11 +02:00
..
anidata.cpp [libkwineffects] Delete unused field in AniData 2018-10-23 18:25:44 +03:00
anidata_p.h [libkwineffects] Delete unused field in AniData 2018-10-23 18:25:44 +03:00
CMakeLists.txt Bump libkwineffects SO version for 5.15 2018-10-04 00:57:44 +03:00
kwinanimationeffect.cpp [libkwineffects] Don't enable painting for windows that are not kept alive 2018-10-31 15:49:11 +02:00
kwinanimationeffect.h [effects/dialogparent] Fix flickering of parent windows 2018-10-10 18:34:12 +03:00
kwinconfig.h.cmake Move linking to DL_LIBRARY to x11standalone platform 2016-11-22 14:22:06 +01:00
kwineffects.cpp [effects] Make Scale and Glide effects Wayland-friendly 2018-10-09 11:04:35 +03:00
kwineffects.h [effects/diminactive] Fix false-triggering of the out animation 2018-10-18 19:27:01 +03:00
kwinglobals.h Fix minor EBN issues 2018-08-29 21:02:16 +03:00
kwinglplatform.cpp Fix the build on armhf/aarch64 2018-03-06 09:25:33 +05:30
kwinglplatform.h
kwingltexture.cpp don't override m_canUseMipmaps 2018-03-14 04:37:44 +02:00
kwingltexture.h Remove Qt module declarations in includes 2018-06-05 18:07:23 +01:00
kwingltexture_p.h [libkwineffects] Try fixing compile error with clang 2017-10-01 09:54:12 +02:00
kwinglutils.cpp [libkwineffects] Push render targets more efficiently in GLRenderTarget::pushRenderTargets 2018-07-03 12:33:04 +03:00
kwinglutils.h Updated the blur method to use the more efficient dual kawase blur algorithm. 2018-01-26 02:31:45 +09:00
kwinglutils_funcs.cpp
kwinglutils_funcs.h
kwinxrenderutils.cpp
kwinxrenderutils.h
logging.cpp
logging_p.h
Mainpage.dox
Messages.sh