https://bugs.kde.org/show_bug.cgi?id=520190

--- Comment #20 from [email protected] ---
ok, so rickard - the reporter of this bug - came up with a fix that seems to
completely stop the leak for me as well. Apparently the change to
PipeWireSourceItem::itemChange() was key.

The fix (full diff below) is in kpipewire, i.e. I've been testing with the
following change *only* and so far I haven't been able to reproduce. Any GPU
mem allocated by plasmashell immediately bounces back using the steps from
comment #1.

BTW: that's a diff against 6.6.4 and 6.6.5 (tested both),
PipeWireSourceItem::releaseResources() seems to have been removed (or moved) in
6.7 and in master.

--- kpipewire.vanilla/src/pipewiresourceitem.cpp  2026-05-24 17:30:29.000000000
+0000
+++ kpipewire/src/pipewiresourceitem.cpp  2026-05-24 18:31:13.718215674 +0000
@@ -103,6 +103,7 @@
     case ItemVisibleHasChanged:
         if (!isVisible()) {
             setReady(false);
+            releaseResources();
         }
         if (d->m_stream) {
             d->m_stream->setActive(isVisible());
@@ -122,8 +123,9 @@
 void PipeWireSourceItem::releaseResources()
 {
     if (window() && (d->m_image || d->m_texture)) {
-        window()->scheduleRenderJob(new DiscardEglPixmapRunnable(d->m_image,
d->m_texture.release()), QQuickWindow::NoStage);
+        window()->scheduleRenderJob(new DiscardEglPixmapRunnable(d->m_image,
d->m_texture.release()), QQuickWindow::AfterSynchronizingStage);
         d->m_image = EGL_NO_IMAGE_KHR;
+        window()->update();
     }
 }

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to