From 769c896cdb5fba5f4078b3cb310ccf98f7c26f3a Mon Sep 17 00:00:00 2001 From: Xaver Hugl Date: Fri, 22 Nov 2024 02:01:56 +0100 Subject: [PATCH] compositor_wayland: don't commit cursor changes if the layer wasn't actually enabled The drm backend doesn't handle changes that do this well, as it requests a pageflip event and the kernel can't give us a pageflip event for an already-disabled plane. BUG: 495843 --- src/compositor_wayland.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/compositor_wayland.cpp b/src/compositor_wayland.cpp index 8d608b82c0..423c42b336 100644 --- a/src/compositor_wayland.cpp +++ b/src/compositor_wayland.cpp @@ -537,13 +537,16 @@ void WaylandCompositor::addOutput(Output *output) outputLayer->setEnabled(true); return output->updateCursorLayer(); }; + const bool wasHardwareCursor = outputLayer && outputLayer->isEnabled(); if (renderHardwareCursor()) { cursorLayer->setVisible(false); return true; } else { - if (outputLayer && outputLayer->isEnabled()) { + if (outputLayer) { outputLayer->setEnabled(false); - output->updateCursorLayer(); + if (wasHardwareCursor) { + output->updateCursorLayer(); + } } cursorLayer->setVisible(cursor->isOnOutput(output)); cursorLayer->setGeometry(outputLocalRect);