diff --git a/src/backends/drm/drm_output.cpp b/src/backends/drm/drm_output.cpp index f21318db4e..867ea6b8a2 100644 --- a/src/backends/drm/drm_output.cpp +++ b/src/backends/drm/drm_output.cpp @@ -217,11 +217,12 @@ bool DrmOutput::moveCursor(const QPoint &position) const QSize layerSize = m_gpu->cursorSize() / scale(); const QRect layerRect = monitorMatrix.mapRect(QRect(m_cursor.position, layerSize)); const auto layer = m_pipeline->cursorLayer(); + const bool wasVisible = layer->isVisible(); layer->setVisible(true); layer->setPosition(layerRect.topLeft()); m_moveCursorSuccessful = m_pipeline->moveCursor(); layer->setVisible(m_moveCursorSuccessful); - if (!m_moveCursorSuccessful) { + if (!m_moveCursorSuccessful || !wasVisible) { m_pipeline->setCursor(); } return m_moveCursorSuccessful;