Summary:
KWin has a problem that breeze crashes it on tear down if the shadow was
created. This is due to breeze destroying the Wayland connection after
KWin destroyed it which triggers a crash in libwayland.
D6571 addresses this problem by deleting the ConnectionThread created by
plugins prior to destroying the Wayland server.
By changing the ownership of the registry and the interfaces to be
children and grandchildren of the ConnectionThread we can ensure that
KWin can clean up this area properly. For non KWin cases this doesn't
change anything, everything is still deleted as a child of ShadowHelper.
Test Plan: Ensured that the Registry gets deleted before KWin's own connection
Reviewers: #kwin, #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D6572
Summary:
since from Qt 5.8 QtWayland destroys its surfaces every time
a window gets hidden and recreates them again when is shown
(that's how the protocol is defined) install the shadows
every time the window is shown, using a map to keep track of surfaces, in order to delete them on window hide and avoid leaks
Test Plan: popup menus have correct shadows on wayland now
Reviewers: #plasma, hpereiradacosta
Subscribers: anthonyfieroni, davidedmundson, plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D5910
Summary:
This is a change mostly for KWin (the Wayland compositor). The internal
Wayland connection is created after the QStyle is created in the case of
KWin. But both are created before the event dispatcher is run for the
first time. So delaying by one cycle makes it work for KWin and also all
other Wayland applications.
BUG: 372001
FIXED-IN: 5.8.4
Reviewers: #plasma, broulik, hpereiradacosta
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D3239
Integrate with Wayland and create a ShadowManager if available.
With the ShadowManager it's possible to create a Shadow for a Surface.
The Wayland shadow is very similar to the X11 based one, so a lot of
code can be shared. The code is slightly refactored to share the common
code paths to create and destroy the shadow.
REVIEW: 127352
Breeze checks if shadows are supported by checking for a property on the
root window. This is set by kwin at some point after startup.
This leaves a gap for apps/plasmashell to start, determine shadows are
not supported and then never render them for the lifespan of that app.
It also can't handle window managers being replaced.
Not checking solves all the issues with limited drawback
REVIEW: 123284
- move all metrics shadowhelper
- handle light source from option
- make actual shadow size and offsets adjustable
- calculate 'effective' shadow size, and overlap, accordingly.