Summary:
Rational: unredirect fullscreen windows is a weird beast. It's intended
to make fullscreen windows "faster" by not compositing that screen. But
that doesn't really work as KWin jumps out of that condition pretty
quickly. E.g. whenever a tooltip window is shown. KWin itself has a
better functionality by supporting to block compositing completely.
The complete code was full of hacks around it to try to ensure that
things don't break.
Overall unredirect fullscreen has always been the odd one. We had it
because a compositor needs to have it, but it never got truly integrated.
E.g. effects don't interact with it properly so that some things randomly
work, others don't. Will it trigger the screenedge, probably yes, but
will it show the highlight: properly no.
By removing the functionality we finally acknowledge that this mode is
not maintained and has not been maintained for years and that we do not
intend to support it better in future. Over the years we tried to make
it more and more hidden: it's disabled for Intel GPUs, because it used
to crash KWin. It's marked as an "expert" option, etc.
It's clearly something we tried to hide from the user that it exists.
For Wayland the whole unredirect infrastructure doesn't make sense
either. There is no such thing as "unredirecting". We might make use
of passing buffers directly to the underlying stack, but that will be
done automatically when we know it can be done, not by some magic is
this a window of specific size.
Test Plan:
Compiles, cannot really test as I am an Intel user who never
had that working.
Reviewers: #kwin, #plasma, #vdg
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D2180
The idea is to warn the user that changing the settings might break
the setup when we know it could be dangerous. The following cases are
considered:
* Scale filter Accurate
* Tearing prevention
* keep window thumbnail always
* EGL if EGL and GLX are available
* unredirect fullscreen not working on all hardware
In addition the OpenGL is Unsafe warning is turned int a KMessageWidget
which is also used for all the other warnings.
REVIEW: 118494
Methods added to the Model to map from row index to the backend
identifier and vice versa. That way the Compositing object can do
all the saving and loading.
* all properties extended to be writable and emit change signals
* contains load from and save to config functionality
* Compositing object in qml view is connected to the values of the
components. So changes are directly mapped from UI to business logic