Floating point arithmetic and/or the use of GL_LINEAR in the pipeline,
may result in visual glitches due to rounding (errors). As a short-term
fix until a proper (more involved) solution is in place for Plasma 6,
pad the damage slightly in all directions to alleviate those effects.
The main motivation for the rewrite is to properly port ShmClientBuffer
to our GraphicsBuffer abstractions. As is, libwayland implementation is
not suitable for our needs. We may need ShmClientBuffer to be alive when
its corresponding wl_shm_buffer resource is destroyed, for example to
play a window closing animation. With the existing api, we need to fight
libwayland. Besides that, libwayland doesn't provide a way to get
underlying pool file descriptor, which is needed to fill ShmAttributes.
kcmutils_add_qml_kcm creates a QRC that contains the "ui" folder.
This this simplifies the installation of KCMs, because all needed files
are bundled with the plugin.
In KCMUtils this means we can get rid of KPackage.
The new org.kde.kcmutils QML module also contains the org.kde.kcm
components that were previously part of KDeclarative.
Depends on https://invent.kde.org/frameworks/kcmutils/-/merge_requests/146
If a closed window is kept alive, it means that somebody needs to
animate it and therefore it should be visible. Otherwise the window
would be destroyed and its item would be removed from the scene.
This change makes the WindowItem not change its visibility if the
associated window is closed. If the window had been invisible before
it was closed, the item would be invisible; if the window had been
visible before it was closed, the item would be visible.
Currently, when a window is added or removed, the work area will be
recomputed unconditionally. But in many cases, it's unnecessary because
only a small fraction of windows has a strut (in default setup, only the
panel has a strut).
Currently, the render node is hardcoded. It works okay as long as the
main device and the hardcoded node are the same. But it breaks on multi
gpu setups where the render device is not /dev/dri/renderD128.
…to avoid the "two stacked rows of buttons" effect.
Changes "Get New" button text to avoid redundancy because title already
contains the "Desktop Effects" string in it.
While the changes made earlier prevent enqueueing buffers when the
stream is not in a streaming state, screencasting continued to crash.
The reason for that seems to be that pipewire will, in certain cases,
invalidate some buffers, including the buffer that we are currently
tracking as "pending buffer". The result of this is that when we then
try to enqueue that buffer, we get a crash.
To prevent this, discard the pending buffer when the stream state
changes. Since that makes the pending fence useless as well, also
discard it and its notifier.
After porting the desktop background window to the layer-shell protocol,
the desktop window is not raised up in the stack anymore when the
showing desktop window is activated. The main reason to avoid this is to
avoid fighting and overriding layer shell logic.
As another way to implement the show desktop mode, this change makes the
workspace hide windows that don't belong to desktop.
It's a better solution for a couple of reasons: "keep above" and other
overlay windows will be properly hidden and it lets us avoid touching
the stacking order.
BUG: 387593
BUG: 406101
BUG: 469827
Currently, X11Window emits Window::windowShown and Window::windowHidden
signals differently than the WaylandWindow. On the other hand, at quick
glance, there's no reason why it has to work like this, so let's make
X11Window behave similarly to WaylandWindow. This lets us simplify code
and potentially unvirtualize Window::isHiddenInternal() in the future.
It also makes X11Window::internalHide and X11Window::internalKeep more
reusable as it doesn't handle focus anymore.
…to avoid the "two stacked rows of buttons" effect.
Changes "Get New" button text to avoid redundancy because title already
contains the "Script" word in it.