Roles/kde: add kwin and plasma-workspace patches

This commit is contained in:
Toast 2025-01-17 22:21:12 +01:00
parent b6bd1ec321
commit 77edacc9d4
4 changed files with 958 additions and 0 deletions

View file

@ -0,0 +1,41 @@
From 45a5d8844b36404334301f5da6e75f1a345e0c80 Mon Sep 17 00:00:00 2001
From: Xaver Hugl <xaver.hugl@gmail.com>
Date: Fri, 10 Jan 2025 13:45:30 +0000
Subject: [PATCH] plugins/screencast: call ItemRenderer::begin/endFrame
The OpenGL renderer references the explicit sync release points for client buffers
during rendering, and releases them in endFrame. If endFrame never gets called though
(for example because we're doing direct scanout) then the release points never get
signaled, and the client very quickly runs out of buffers to use and freezes.
BUG: 495287
(cherry picked from commit b1031ea63eaa8c9bf5c70157d1b6bf8eb0f5a74a)
Co-authored-by: Xaver Hugl <xaver.hugl@gmail.com>
---
src/plugins/screencast/windowscreencastsource.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/plugins/screencast/windowscreencastsource.cpp b/src/plugins/screencast/windowscreencastsource.cpp
index 24ef92aad7b..b396eed46f9 100644
--- a/src/plugins/screencast/windowscreencastsource.cpp
+++ b/src/plugins/screencast/windowscreencastsource.cpp
@@ -75,11 +75,11 @@ void WindowScreenCastSource::render(GLFramebuffer *target)
RenderTarget renderTarget(target);
RenderViewport viewport(m_window->clientGeometry(), 1, renderTarget);
- GLFramebuffer::pushFramebuffer(target);
+ Compositor::self()->scene()->renderer()->beginFrame(renderTarget, viewport);
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
Compositor::self()->scene()->renderer()->renderItem(renderTarget, viewport, m_window->windowItem(), Scene::PAINT_WINDOW_TRANSFORMED, infiniteRegion(), WindowPaintData{});
- GLFramebuffer::popFramebuffer();
+ Compositor::self()->scene()->renderer()->endFrame();
}
std::chrono::nanoseconds WindowScreenCastSource::clock() const
--
GitLab