https://bugs.kde.org/show_bug.cgi?id=357543
--- Comment #2 from Martin Gräßlin <mgraess...@kde.org> --- possible patch (not tested): diff --git a/backends/drm/drm_backend.cpp b/backends/drm/drm_backend.cpp index 128bdc2..7b1b240 100644 --- a/backends/drm/drm_backend.cpp +++ b/backends/drm/drm_backend.cpp @@ -614,7 +614,7 @@ bool DrmOutput::present(DrmBuffer *buffer) if (m_currentBuffer) { return false; } - if (m_lastStride != buffer->stride()) { + if (m_lastStride != buffer->stride() || m_lastGbm != buffer->isGbm()) { // need to set a new mode first if (!setMode(buffer)) { return false; @@ -811,6 +811,7 @@ bool DrmOutput::setMode(DrmBuffer *buffer) { if (drmModeSetCrtc(m_backend->fd(), m_crtcId, buffer->bufferId(), 0, 0, &m_connector, 1, &m_mode) == 0) { m_lastStride = buffer->stride(); + m_lastGbm = buffer->isGbm(); return true; } else { qCWarning(KWIN_DRM) << "Mode setting failed"; diff --git a/backends/drm/drm_backend.h b/backends/drm/drm_backend.h index af22594..b247776 100644 --- a/backends/drm/drm_backend.h +++ b/backends/drm/drm_backend.h @@ -181,6 +181,7 @@ private: quint32 m_crtcId = 0; quint32 m_connector = 0; quint32 m_lastStride = 0; + bool m_lastGbm = false; drmModeModeInfo m_mode; DrmBuffer *m_currentBuffer = nullptr; DrmBuffer *m_blackBuffer = nullptr; @@ -221,6 +222,9 @@ public: gbm_bo *gbm() const { return m_bo; } + bool isGbm() const { + return m_bo != nullptr; + } void releaseGbm(); private: -- You are receiving this mail because: You are watching all bug changes.