kwin/effects
Martin Flöser 02a0561016 Add windowsystem plugin for KWin's qpa
Summary:
KWindowSystem provides a plugin interface to have platform specific
implementations. So far KWin relied on the implementation in
KWayland-integration repository.

This is something I find unsuited, for the following reasons:
 * any test in KWin for functionality set through the plugin would fail
 * it's not clear what's going on where
 * in worst case some code could deadlock
 * KWin shouldn't use KWindowSystem and only a small subset is allowed
to be used

The last point needs some further explanation. KWin internally does not
and cannot use KWindowSystem. KWindowSystem (especially KWindowInfo) is
exposing information which KWin sets. It's more than weird if KWin asks
KWindowSystem for the state of a window it set itself. On X11 it's just
slow, on Wayland it can result in roundtrips to KWin itself which is
dangerous.

But due to using Plasma components we have a few areas where we use
KWindowSystem. E.g. a Plasma::Dialog sets a window type, the slide in
direction, blur and background contrast. This we want to support and
need to support. Other API elements we do not want, like for examples
the available windows. KWin internal windows either have direct access
to KWin or a scripting interface exposed providing (limited) access -
there is just no need to have this in KWindowSystem.

To make it more clear what KWin supports as API of KWindowSystem for
internal windows this change implements a stripped down version of the
kwayland-integration plugin. The main difference is that it does not use
KWayland at all, but a QWindow internal side channel.

To support this EffectWindow provides an accessor for internalWindow and
the three already mentioned effects are adjusted to read from the
internal QWindow and it's dynamic properties.

This change is a first step for a further refactoring. I plan to split
the internal window out of ShellClient into a dedicated class. I think
there are nowadays too many special cases. If it moves out there is the
question whether we really want to use Wayland for the internal windows
or whether this is just historic ballast (after all we used to use
qwayland for that in the beginning).

As the change could introduce regressions I'm targetting 5.16.

Test Plan:
new test case for window type, manual testing using Alt+Tab
for the effects integration. Sliding popups, blur and contrast worked fine.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18228
2019-01-27 08:59:58 +01:00
..
backgroundcontrast Add windowsystem plugin for KWin's qpa 2019-01-27 08:59:58 +01:00
blur Add windowsystem plugin for KWin's qpa 2019-01-27 08:59:58 +01:00
colorpicker Scaling support in ColorPicker effect 2017-04-28 10:23:13 +01:00
coverswitch [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
cube [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
cubeslide [effects] Move the Desktop Cube Animation effect to its own directory 2018-09-28 20:07:32 +03:00
desktopgrid [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
dialogparent SVN_SILENT made messages (.desktop file) - always resolve ours 2018-11-22 06:02:11 +01:00
diminactive [effects/diminactive] Dim Wayland clients 2018-10-19 14:38:10 +03:00
dimscreen SVN_SILENT made messages (.desktop file) - always resolve ours 2018-12-12 06:11:35 +01:00
eyeonscreen SVN_SILENT made messages (.desktop file) - always resolve ours 2018-11-22 06:02:11 +01:00
fade SVN_SILENT made messages (.desktop file) - always resolve ours 2019-01-06 05:42:41 +01:00
fadedesktop [effects/fadedesktop] Rewrite it 2018-11-17 13:44:20 +02:00
fadingpopups SVN_SILENT made messages (.desktop file) - always resolve ours 2019-01-25 05:40:11 +01:00
fallapart [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
flipswitch [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
frozenapp SVN_SILENT made messages (.desktop file) - always resolve ours 2018-11-22 06:02:11 +01:00
glide [effects] Add plasmashell to the blacklist of Glide and Scale effect on Wayland 2018-10-18 19:18:03 +03:00
highlightwindow [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
invert [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
kscreen [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
login SVN_SILENT made messages (.desktop file) - always resolve ours 2019-01-06 05:42:41 +01:00
logout SVN_SILENT made messages (.desktop file) - always resolve ours 2018-12-07 05:29:42 +01:00
lookingglass [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
magiclamp [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
magnifier [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
maximize SVN_SILENT made messages (.desktop file) - always resolve ours 2019-01-06 05:42:41 +01:00
morphingpopups [autotests] Test all scripted effects 2018-11-21 20:01:06 +02:00
mouseclick [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
mousemark [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
presentwindows [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
resize [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
scale SVN_SILENT made messages (.desktop file) - always resolve ours 2019-01-14 05:39:00 +01:00
screenedge [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
screenshot [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
sheet [effects/sheet] Decrease the default animation duration 2018-10-22 10:11:00 +03:00
showfps SVN_SILENT made messages (.desktop file) - always resolve ours 2018-11-01 05:58:11 +01:00
showpaint SVN_SILENT made messages (.desktop file) - always resolve ours 2018-11-29 05:32:08 +01:00
slide [effects/slide] Simplify logic that forces blur and background contrast 2018-10-02 19:54:37 +03:00
slideback [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
slidingpopups Add windowsystem plugin for KWin's qpa 2019-01-27 08:59:58 +01:00
snaphelper [effects/snaphelper] Do massive overhaul 2018-11-05 16:59:19 +02:00
squash SVN_SILENT made messages (.desktop file) - always resolve ours 2019-01-25 05:40:11 +01:00
startupfeedback [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
thumbnailaside [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
touchpoints Fix unused-parameter warnings as reported by GCC 2017-07-28 21:31:09 +02:00
trackmouse [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
translucency SVN_SILENT made messages (.desktop file) - always resolve ours 2019-01-06 05:42:41 +01:00
windowaperture SVN_SILENT made messages (.desktop file) - always resolve ours 2018-11-22 06:02:11 +01:00
windowgeometry [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
wobblywindows [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
zoom [effects] Port to new connect syntax 2019-01-26 01:22:06 +02:00
CMakeLists.txt [effects/dimscreen] Port to JavaScript 2018-11-17 13:44:20 +02:00
Messages.sh Remove temporary file 2008-07-02 07:04:51 +00:00
effect_builtins.cpp [effects/dimscreen] Port to JavaScript 2018-11-17 13:44:20 +02:00
effect_builtins.h [effects/dimscreen] Port to JavaScript 2018-11-17 13:44:20 +02:00
kwineffect.desktop [effects] Fix type of X-KWin-Video-Url 2018-09-11 13:46:35 +03:00
logging.cpp pedantic fixes 2016-07-16 13:14:44 -04:00
shaders.qrc Removed the "fastblur" path 2018-02-03 19:04:11 +01:00