Do not decide on the output when the window is empty, contains won't
report empty rects. We'll be sending leave events unnecessarily.
Make sure we don't pass unexisting outputs.
Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
(cherry picked from commit 45feca5df4)
Co-authored-by: Aleix Pol Gonzalez <aleix.pol_gonzalez@mercedes-benz.com>
There's only two cases where a pipeline can be destroyed:
- hotunplug of a display, in which case DrmGpu already waits for all pipelines to be idle
- hotunplug of a GPU, in which case the pageflip events are safely ignored
In the latter case, it can happen that a pending pageflip event will never arrive, so it's
not just unnecessary but actively harmful to wait for the pageflip event.
(cherry picked from commit 87b3541766)
Co-authored-by: Xaver Hugl <xaver.hugl@gmail.com>
The code after sleeping relies on m_commits not being empty, but if the main
thread modifies it, that might not be the case
(cherry picked from commit f578483d93)
Co-authored-by: Xaver Hugl <xaver.hugl@gmail.com>
Polling for drm events works for waiting on pageflip events, but if there's commits
scheduled for future submission, and that fails, no pageflip will ever arrive.
To fix that, this commit ensures at least one commit is actually submitted to the
kernel before polling for pageflip events.
BUG: 492167
(cherry picked from commit 33ad107fa1)
Co-authored-by: Xaver Hugl <xaver.hugl@gmail.com>
As we opportunistically use KMS outside of ICC profiles to apply night light,
we need to explicitly set the shader fallback option to make it be applied in
shaders instead.
BUG: 492890
(cherry picked from commit 5fde036d74)
Co-authored-by: Xaver Hugl <xaver.hugl@gmail.com>
This reverts commit b708a93c1e.
The crashes in BlurEffect::prePaintWindow() continue occurring without
tripping this code, so the culprit must lie elsewhere.
(cherry picked from commit 0f78a2725d)
Co-authored-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
If a focussed window is to a new virtual desktop we need to update focus. It
does not make sense for focus to remain on a now-invisible window. This patch
re-uses the same path as when virtual desktop is changed.
BUG: 481574
(cherry picked from commit b96e6cf0b3)
Co-authored-by: David Edmundson <kde@davidedmundson.co.uk>
When we change a Virtual Desktop for a window there are implications on the
stacking order and focus. We need to separate the low level action of
updating just the window and the more general request.
(cherry picked from commit de59a15efe)
Co-authored-by: David Edmundson <kde@davidedmundson.co.uk>
Focus tracking with accessibility APIs is disabled on Wayland because it causes hangs, but we
can at least warp the pointer to the active window instead of (0, 0)
BUG: 493217
(cherry picked from commit c3ed817ef4)
Co-authored-by: Xaver Hugl <xaver.hugl@gmail.com>
When TabBoxHandler::createModel() gets called, it must reset
lastRaisedClient and lastRaisedClientSucc if they are closed windows.
But the createModel() function currently doesn't do it, which can
eventually lead to accessing dangling pointers in
TabBoxHandlerPrivate::updateHighlightWindows().
Besides that, there are a couple more cases where closed windows
need to be filtered out when processing the stack.
(cherry picked from commit ff2b424e06)
Co-authored-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
We update the parent's child list, so its sorted child list must be
invalidated.
(cherry picked from commit 32d7d8a1ea)
Co-authored-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Using xyY values to specify the primaries for XYZ doesn't quite work out, so this
commit changes Colorimetry to use (normalized) XYZ values for the primaries and
adds a test that verifies XYZ->XYZ transformations to be identity