Summary:
If a client has been resized, it doesn't necessarily mean that the
decoration theme will schedule full repaint of the window frame. In
OpenGL and Xrender scene, we have a little hack that forces a full
repaint of window borders. However, we don't have one in QPainter
scene which causes all sorts of weird looking artifacts when resizing
a server-side decorated client.
We could add yet another hack in the QPainter scene, but a better
approach to tackle this problem would be to make DecoratedClient
schedule a full repaint of the decoration. It makes code in scene
plugins more straightforward and prevents us from repeating the same
mistake again.
Test Plan:
No longer able to see invisible decoration borders when
using QPainter render backend.
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: davidedmundson, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D26927
Summary:
If the listed interpreter does not exist, kconf_update skips the update.
The update script uses python3, so declare that properly.
Test Plan: Saw the error by accident, it's gone now.
Reviewers: #plasma, zzag
Reviewed By: #plasma, zzag
Subscribers: kwin, plasma-devel
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D26942
Summary:
QProcess::error() has been deprecated since Qt 5.6. It is highly advised
to use QProcess::errorOccurred() instead.
Test Plan: Compiles.
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D26922
Summary:
According to the xdg-shell spec, configure events carry the maximum
window geometry size. If a client wants to enforce aspect ratio, it
may attach a buffer with smaller size. We need to account for that
when determining frame geometry in the commit handler.
I'm targeting 5.18 branch.
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D26886
Summary:
Currently, the input geometry for client-side decorated clients matches
the frame geometry, which makes it impossible for a user to resize such
clients by just dragging invisible area near window borders.
BUG: 416346
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: cblack, ngraham, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D26716
Summary:
In the KCFG autogenerated code we check for HAVE_BREEZE_DECO without
including the relevant file. This always fails, and so we save the
default plugin name/library as org.kde.kwin.aurorae
This doesn't match kwin's concept of the default and so we just fail to
load it.
BUG: 416525
Test Plan:
Reproduced
Saved a config
Reviewers: #kwin, ngraham
Reviewed By: ngraham
Subscribers: ngraham, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D26814
Summary:
Legacy OpenGL 1 compositing backend had been dropped quite a while ago
so some of OpenGL scene classes can be merged back.
Test Plan: Compiles, windows are rendered as before.
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: davidedmundson, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D26700
Summary:
These timings can be useful for the night color applet. For example, it
could show "Next transition will start at XXX" or something like that.
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D26666
Summary:
This change ensures that KWin can be built with a version of KWS that
doesn't have any deprecated stuff. I assume that no distro ships such
builds of KWS and it's only a developer thing.
I didn't backport KWINDOWSYSTEM_BUILD_DEPRECATED_SINCE macro because
the next release of Plasma (5.18) depends on KF 5.66.
Reviewers: #kwin, davidedmundson
Reviewed By: #kwin, davidedmundson
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D26642
Summary: Port to KConfigXt and also consider immutable element
Reviewers: #kwin, ervin, bport, mart, davidedmundson
Subscribers: zzag, kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D25949
Summary:
Very useful when you use virtual desktops. See T11520 for more information.
This reverts commit d72e96802b.
Test Plan: Have 2 or more virtual desktops and use the new shortcut.
Reviewers: #kwin, #plasma, #vdg, romangg, ngraham, davidedmundson
Reviewed By: #vdg, ngraham, davidedmundson
Subscribers: alexisd, alexde, ognarb, hpereiradacosta, broulik, davidedmundson, thiagosueto, ngraham, romangg, zzag, #vdg, #plasma, kwin, #kwin
Tags: #kwin
Maniphest Tasks: T11520
Differential Revision: https://phabricator.kde.org/D24281
While the slider is still there for non-Plasma, inside Plasma, where you would use System Settings, the slider is in Workspace Options.
Differential Revision: https://phabricator.kde.org/D26625
Summary:
Scene opengl has a callback for when we have a GL error. One of the
handlers for an error calls scheduleVboReInit the history shows it was a
forerunner to the GLX_NV_robustness_video_memory_purge but resetting
only one tiny part based on debug output.
When we get here we schedule a reset of the vertex buffer, via a timer.
When the timer is caled we have no idea what GL context was last
current, if it's not the currect context then the main scene
GLVertexBuffer will be deleted but not correctly re-initialised.
We have two very common crashes with a corrupted
GLVertexBuffer::streamingBuffer() which would match up perfectly.
Given that we now have a proper mechanism to reset the entire scene, we
don't need this timer based hack and resolve that problem.
BUG: 399499
BUG: 372305
Reviewers: #kwin
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D26556
Summary:
Currently EffectWindowImpl::shape() falls back to the frame geometry
because isX11Client() returns invalid value for Unmanaged clients.
BUG: 415475
Reviewers: #kwin, romangg
Reviewed By: #kwin, romangg
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D26542
Summary:
Copies the approach we do for various GL calls not existing on the
system headers.
See D25962
Reviewers: #kwin, romangg
Reviewed By: #kwin, romangg
Subscribers: kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D26553
Summary:
Quite long time ago, window decorations were painted on real X11 windows.
The nicest thing about that approach is that we get both contents of the
client and the frame window at the same time. However, somewhere around
KDE 4.2 - 4.3 times, decoration rendering architecture had been changed
to what we have now.
I've mentioned the previous decoration rendering design because it didn't
have a problem that the new design has, namely the texture bleeding issue.
In the name of better performance, opengl scene puts all decoration parts
to an atlas. This is totally reasonable, however we must be super cautious
about things such as the GL_LINEAR filter.
The GL_LINEAR filter may need to sample a couple of neighboring texels
in order to produce the final texel value. However, since all decoration
parts now live in a single texture, we have to make sure that we don't
sample texels that belong to another decoration part.
This patch fixes the texture bleeding problem by padding each individual
decoration part in the atlas. There is another solution for this problem
though. We could render a window into an offscreen texture and then map
that texture on the transformed window geometry. This would work well and
we definitely need an offscreen rendering path in the opengl scene,
however it's not feasible at the moment since we need to break the window
quads API. Also, it would be great to have as less as possible stuff going
on between invocation of Scene::Window::performPaint() and getting the
corresponding pixel data on the screen.
There is a good chance that the new padding stuff may make you vomit. If
it does so, I'm all ears for the suggestions how to make the code more
nicer.
BUG: 257566
BUG: 360549
CCBUG: 412573
FIXED-IN: 5.18.0
Reviewers: #kwin
Subscribers: fredrik, kwin, fvogt
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D25611