kwin/effects
Vlad Zagorodniy ad28da84e7 [effects/slidingpopups] Don't crash when sliding virtual desktops
Summary:
If you switch virtual desktops while krunner is sliding in, then
depending on whether your distro strips assert statements away,
KWin can crash.

The reason why it crashes is the sliding popups effect tries to unref
deleted windows that it hasn't referenced before (if there is an active
full screen effect, then popups won't be slided out, which in its turn
means that we won't reference deleted windows). So, in the end, the
refcount of those windows can be -1. That triggers an assert statement
in the destructor of the Deleted class, which checks whether the
refcount is equal to 0.

Popups are not slided while there is an active full screen effect because
we don't know what the full screen effect does.

This patch adjusts the sliding popups effect so it stops all active
animations when user switches virtual desktops or when a full screen
effect kicks in. We need to do that so the effect won't try to
unreference windows in postPaintWindow.

Visually, it doesn't look quite nice, but for now that's good enough.
A proper fix would be more complex: we would need to make sure that
full screen effects ignore sliding popups (and also maybe docks) and
perform some input redirection.

BUG: 400170
FIXED-IN: 5.14.4

Test Plan: I'm not able anymore to reproduce bug 400170.

Reviewers: #kwin, graesslin

Reviewed By: #kwin, graesslin

Subscribers: davidedmundson, graesslin, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D16731
2018-11-07 19:22:31 +02:00
..
backgroundcontrast
blur Clean up includes 2018-08-31 22:58:11 +03:00
colorpicker
coverswitch SVN_SILENT made messages (.desktop file) - always resolve ours 2018-07-23 05:24:40 +02:00
cube SVN_SILENT made messages (.desktop file) - always resolve ours 2018-09-04 08:26:22 +02:00
desktopgrid [effects/desktopgrid] Don't display the close button from Present Windows 2018-10-30 22:39:08 +02:00
dialogparent [effects/dialogparent] Fix strict mode issues 2018-09-10 22:49:49 +03:00
diminactive [effects/diminactive] Delete active transitions when window is deleted 2018-10-11 17:48:37 +03:00
dimscreen
eyeonscreen [kcmkwin/compositing] Move show desktop effects to their own category 2018-08-02 16:32:57 +03:00
fade [effects/logout] Animate ksmserver-logout-greeter 2018-08-19 22:12:00 +03:00
fadedesktop SVN_SILENT made messages (.desktop file) - always resolve ours 2018-08-11 07:46:02 +02:00
fallapart
flipswitch Fix minor EBN issues 2018-08-29 21:02:16 +03:00
frozenapp SVN_SILENT made messages (.desktop file) - always resolve ours 2018-07-23 05:24:40 +02:00
glide [effects/logout] Animate ksmserver-logout-greeter 2018-08-19 22:12:00 +03:00
highlightwindow
invert [effects/invert] Don't block blur and background contrast effect 2018-10-23 13:57:56 +03:00
kscreen [effects/kscreen] Port to TimeLine 2018-07-05 23:00:27 +03:00
login SVN_SILENT made messages (.desktop file) - always resolve ours 2018-08-11 07:46:02 +02:00
logout SVN_SILENT made messages (.desktop file) - always resolve ours 2018-10-31 08:05:22 +01:00
lookingglass SVN_SILENT made messages (.desktop file) - always resolve ours 2018-11-02 07:56:45 +01:00
magiclamp SVN_SILENT made messages (.desktop file) - always resolve ours 2018-07-23 05:24:40 +02:00
magnifier [effects/magnifier] Fix 1 px gap between magnified area and frame 2018-09-10 13:08:25 +03:00
maximize SVN_SILENT made messages (.desktop file) - always resolve ours 2018-07-23 05:24:40 +02:00
minimizeanimation [effects/minimizeanimation] Delete useless comments 2018-08-15 12:11:58 +03:00
morphingpopups SVN_SILENT made messages (.desktop file) - always resolve ours 2018-08-11 07:46:02 +02:00
mouseclick SVN_SILENT made messages (.desktop file) - always resolve ours 2018-07-23 05:24:40 +02:00
mousemark [effects/mousemark] Properly use GL_LINE_SMOOTH 2018-08-09 22:52:37 +03:00
presentwindows Merge branch 'Plasma/5.12' into Plasma/5.14 2018-10-29 00:02:52 +02:00
resize SVN_SILENT made messages (.desktop file) - always resolve ours 2018-07-23 05:24:40 +02:00
scale SVN_SILENT made messages (.desktop file) - always resolve ours 2018-10-31 08:05:22 +01:00
screenedge
screenshot
sheet [effects/sheet] Modernize code 2018-08-12 11:18:37 +03:00
showfps SVN_SILENT made messages (.desktop file) - always resolve ours 2018-07-23 05:24:40 +02:00
showpaint [effects/showpaint] Modernize code 2018-09-11 17:01:17 +03:00
slide [effects/slide] Use QOverload 2018-09-05 21:01:43 +03:00
slideback
slidingpopups [effects/slidingpopups] Don't crash when sliding virtual desktops 2018-11-07 19:22:31 +02:00
snaphelper
startupfeedback
thumbnailaside [effects/thumbnailaside] Save shortcuts 2018-10-27 19:09:49 +03:00
touchpoints
trackmouse [effects/trackmouse] Allow to use both modifiers and shortcut 2018-09-12 16:37:05 +03:00
translucency SVN_SILENT made messages (.desktop file) - always resolve ours 2018-09-29 08:55:05 +02:00
windowaperture [kcmkwin/compositing] Move show desktop effects to their own category 2018-08-02 16:32:57 +03:00
windowgeometry SVN_SILENT made messages (.desktop file) - always resolve ours 2018-07-23 05:24:40 +02:00
wobblywindows [effects/wobblywindows] Fix visual artifacts caused by maximize effect 2018-10-09 18:30:13 +03:00
zoom [effects/zoom] Set wrap mode for cursor texture 2018-10-04 21:40:49 +03:00
CMakeLists.txt [effects] Drop the Scale in effect 2018-08-12 10:58:07 +03:00
effect_builtins.cpp Avoid global static for effects 2018-08-30 13:32:56 +02:00
effect_builtins.h [effects] Add Scale effect 2018-08-12 10:57:41 +03:00
kwineffect.desktop [effects] Fix type of X-KWin-Video-Url 2018-09-11 13:46:35 +03:00
logging.cpp
Messages.sh
shaders.qrc