summaryrefslogtreecommitdiff
path: root/src/managers/screenshare/ScreenshareFrame.cpp
diff options
context:
space:
mode:
authoroutfoxxed <outfoxxed@outfoxxed.me>2026-04-13 10:17:10 +0200
committerGitHub <noreply@github.com>2026-04-13 09:17:10 +0100
commit933a24caa68d4d217207838bceabd5577838431c (patch)
treede69b36c2d1438ed8d4d63f24fb96215067b1486 /src/managers/screenshare/ScreenshareFrame.cpp
parent814337fdd2e0894c2451b258e605e9ab0b603b48 (diff)
screencopy: clear buffer before rendering (#14064)
If reusing wl_buffers when capturing a transparent window, the current frame would overlay the previous frame instead of replacing it.
Diffstat (limited to 'src/managers/screenshare/ScreenshareFrame.cpp')
-rw-r--r--src/managers/screenshare/ScreenshareFrame.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/managers/screenshare/ScreenshareFrame.cpp b/src/managers/screenshare/ScreenshareFrame.cpp
index 6d110837..47c61fe6 100644
--- a/src/managers/screenshare/ScreenshareFrame.cpp
+++ b/src/managers/screenshare/ScreenshareFrame.cpp
@@ -335,15 +335,15 @@ void CScreenshareFrame::render() {
const auto PERM = g_pDynamicPermissionManager->clientPermissionMode(m_session->m_client, PERMISSION_TYPE_SCREENCOPY);
CRegion frameRegion = {0, 0, g_pHyprRenderer->m_renderData.pMonitor->m_pixelSize.x, g_pHyprRenderer->m_renderData.pMonitor->m_pixelSize.y};
- if (PERM == PERMISSION_RULE_ALLOW_MODE_PENDING) {
- g_pHyprRenderer->draw(CClearPassElement::SClearData{{0, 0, 0, 0}}, frameRegion);
+
+ g_pHyprRenderer->draw(CClearPassElement::SClearData{{0, 0, 0, 0}}, frameRegion);
+
+ if (PERM == PERMISSION_RULE_ALLOW_MODE_PENDING)
return;
- }
bool windowShareDenied = m_session->m_type == SHARE_WINDOW && m_session->m_window->m_ruleApplicator && m_session->m_window->m_ruleApplicator->noScreenShare().valueOrDefault();
g_pHyprRenderer->startRenderPass();
if (PERM == PERMISSION_RULE_ALLOW_MODE_DENY || windowShareDenied) {
- g_pHyprRenderer->draw(CClearPassElement::SClearData{{0, 0, 0, 0}}, frameRegion);
CBox texbox = CBox{m_bufferSize / 2.F, g_pHyprRenderer->m_screencopyDeniedTexture->m_size}.translate(-g_pHyprRenderer->m_screencopyDeniedTexture->m_size / 2.F);
g_pHyprRenderer->draw(CTexPassElement::SRenderData{.tex = g_pHyprRenderer->m_screencopyDeniedTexture, .box = texbox}, texbox);
return;