If a window is already being moved, just switch the current virtual
desktop rather than update Workspace::moveResizeWindow() which is going
to trip an assert.
Add a new m_requestedTile member that gets set immediately
with either requestTile() or setQuickTileMode(), at
XdgToplevelWindow::handleStatesAcknowledged()
Window::commitTile() will be called and m_tile will be actually
set only on that step
Software brightness is very useful when the backlight really can't be controlled by us, but if it's just temporarily
unavailable because of powerdevil not running, or DDC/CI having issues, then it's best if we don't darken the image
in software on top of the backlight level still being set by the display.
GL operations that are executed at the end of a frame recording are not
necessary when memfds are in use. So this change makes sure that they
are executed only when dmabufs are used in the PipeWire stream.
This change adds explicit sync support to screencasting. If KWin and the
client successfully negotiate to use explicit sync, KWin adds two
additional blocks to each PipeWire buffer to store file descriptors for
the acquire and release syncobjs. In this implementation, these are the
same syncobjs. The timeline points that the client needs to wait and
signal are set by KWin and shared with the client using a new SPA
metadata type.
The enum describing the type of the PipeWire buffer blocks that contain
syncobj file descriptors and the metadata struct describing the timeline
points are added in PipeWire 1.2.0. So, this change bumps up the
required PipeWire version. However, this change does not break
compatibility with older versions of PipeWire.
Instead of just multiplying colors on the output, we also need to adapt them during
compositing, and tell clients using color management about it.
Without this, the primary colors would stay the same in absolute terms, just with
changed strength, but relative to the white point, aka how humans perceive it,
the color becomes more intense (even if darker) and changes.
With this, colors get moved around to be correct relative to the white point, which
makes night light change the image a lot less and makes the result easier on the eyes.
When an ICC profile is set, the old behavior is retained, as implementing that correctly
turned out to be more complex. This should be fixed in a future commit.
This simplifies the pipeline slightly, and allows for the HDR headroom between the new
reference luminance and the max. luminance of the screen to be used.
30s makes the user suspect the whole PC is completely frozen, even though this can happen
in some cases when unplugging an external GPU for example. The kernel should never take more
than one frame to deliver the pageflip event, one second is plenty to be safe.