From 326d21169142e60a59bfb107f4a5991c0e7ed6f3 Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii Date: Thu, 4 Feb 2021 10:45:18 +0200 Subject: [PATCH] platform: Use damage tracked by SurfaceItem There is no need for both kwin and kwaylandserver track damage. --- .../scenes/opengl/abstract_egl_backend.cpp | 12 +----------- src/plugins/platforms/drm/egl_stream_backend.cpp | 2 -- src/plugins/scenes/qpainter/scene_qpainter.cpp | 6 ------ 3 files changed, 1 insertion(+), 19 deletions(-) diff --git a/src/platformsupport/scenes/opengl/abstract_egl_backend.cpp b/src/platformsupport/scenes/opengl/abstract_egl_backend.cpp index c8d773f71f..47c4ee2db4 100644 --- a/src/platformsupport/scenes/opengl/abstract_egl_backend.cpp +++ b/src/platformsupport/scenes/opengl/abstract_egl_backend.cpp @@ -424,9 +424,6 @@ bool AbstractEglTexture::loadTexture(WindowPixmap *pixmap) return false; } // try Wayland loading - if (auto s = pixmap->surface()) { - s->resetTrackedDamage(); - } if (buffer->linuxDmabufBuffer()) { return loadDmabufTexture(buffer); } else if (buffer->shmBuffer()) { @@ -461,9 +458,6 @@ void AbstractEglTexture::updateTexture(WindowPixmap *pixmap, const QRegion ®i // The origin in a dmabuf-buffer is at the upper-left corner, so the meaning // of Y-inverted is the inverse of OpenGL. q->setYInverted(!(dmabuf->flags() & KWaylandServer::LinuxDmabufUnstableV1Interface::YInverted)); - if (s) { - s->resetTrackedDamage(); - } return; } if (!buffer->shmBuffer()) { @@ -476,9 +470,6 @@ void AbstractEglTexture::updateTexture(WindowPixmap *pixmap, const QRegion ®i } m_image = image; } - if (s) { - s->resetTrackedDamage(); - } return; } // shm fallback @@ -487,8 +478,7 @@ void AbstractEglTexture::updateTexture(WindowPixmap *pixmap, const QRegion ®i return; } Q_ASSERT(image.size() == m_size); - const QRegion damage = s->mapToBuffer(s->trackedDamage()); - s->resetTrackedDamage(); + const QRegion damage = s->mapToBuffer(region); // TODO: this should be shared with GLTexture::update createTextureSubImage(image, damage); diff --git a/src/plugins/platforms/drm/egl_stream_backend.cpp b/src/plugins/platforms/drm/egl_stream_backend.cpp index 316affb26d..a421cf9078 100644 --- a/src/plugins/platforms/drm/egl_stream_backend.cpp +++ b/src/plugins/platforms/drm/egl_stream_backend.cpp @@ -599,7 +599,6 @@ bool EglStreamTexture::loadTexture(WindowPixmap *pixmap) attachBuffer(surface->buffer()); createFbo(); - surface->resetTrackedDamage(); if (acquireStreamFrame(st->stream)) { copyExternalTexture(st->texture); @@ -624,7 +623,6 @@ void EglStreamTexture::updateTexture(WindowPixmap *pixmap, const QRegion ®ion if (attachBuffer(surface->buffer())) { createFbo(); } - surface->resetTrackedDamage(); if (acquireStreamFrame(st->stream)) { copyExternalTexture(st->texture); diff --git a/src/plugins/scenes/qpainter/scene_qpainter.cpp b/src/plugins/scenes/qpainter/scene_qpainter.cpp index 1beb81be96..6b477b3446 100644 --- a/src/plugins/scenes/qpainter/scene_qpainter.cpp +++ b/src/plugins/scenes/qpainter/scene_qpainter.cpp @@ -370,9 +370,6 @@ void QPainterWindowPixmap::create() } // performing deep copy, this could probably be improved m_image = buffer()->data().copy(); - if (auto s = surface()) { - s->resetTrackedDamage(); - } } void QPainterWindowPixmap::update() @@ -394,9 +391,6 @@ void QPainterWindowPixmap::update() } // perform deep copy m_image = b->data().copy(); - if (auto s = surface()) { - s->resetTrackedDamage(); - } } bool QPainterWindowPixmap::isValid() const