diff --git a/plugins/platforms/drm/drm_output.cpp b/plugins/platforms/drm/drm_output.cpp --- a/plugins/platforms/drm/drm_output.cpp +++ b/plugins/platforms/drm/drm_output.cpp @@ -80,12 +80,17 @@ } m_primaryPlane->setCurrent(nullptr); } + if (m_cursorPlane) { + m_cursorPlane->setOutput(nullptr); + } m_crtc->setOutput(nullptr); m_conn->setOutput(nullptr); delete m_cursor[0]; + m_cursor[0] = nullptr; delete m_cursor[1]; + m_cursor[1] = nullptr; if (!m_pageFlipPending) { deleteLater(); } //else will be deleted in the page flip handler @@ -166,6 +171,9 @@ void DrmOutput::updateCursor() { + if (m_deleted) { + return; + } QImage cursorImage = m_backend->softwareCursor(); if (cursorImage.isNull()) { return;