diff --git a/src/backends/drm/drm_backend.cpp b/src/backends/drm/drm_backend.cpp index 11e450925c..3304f6b07d 100644 --- a/src/backends/drm/drm_backend.cpp +++ b/src/backends/drm/drm_backend.cpp @@ -364,6 +364,11 @@ void DrmBackend::sceneInitialized() for (const auto &gpu : std::as_const(m_gpus)) { gpu->recreateSurfaces(); } + for (const auto &output : qAsConst(m_outputs)) { + if (DrmOutput *drmOutput = qobject_cast(output)) { + drmOutput->resetCursorTexture(); + } + } } } diff --git a/src/backends/drm/drm_output.cpp b/src/backends/drm/drm_output.cpp index a1e4b4b3a0..8dc0139c92 100644 --- a/src/backends/drm/drm_output.cpp +++ b/src/backends/drm/drm_output.cpp @@ -221,6 +221,11 @@ bool DrmOutput::moveCursor(const QPoint &position) return m_moveCursorSuccessful; } +void DrmOutput::resetCursorTexture() +{ + m_cursor.texture.reset(); +} + QList> DrmOutput::getModes() const { const auto drmModes = m_pipeline->connector()->modes(); diff --git a/src/backends/drm/drm_output.h b/src/backends/drm/drm_output.h index 015368c0f8..efadd4d508 100644 --- a/src/backends/drm/drm_output.h +++ b/src/backends/drm/drm_output.h @@ -52,6 +52,7 @@ public: bool setCursor(const QImage &image, const QPoint &hotspot) override; bool moveCursor(const QPoint &position) override; + void resetCursorTexture(); DrmLease *lease() const; bool addLeaseObjects(QVector &objectList);