diff options
| author | outfoxxed <outfoxxed@outfoxxed.me> | 2026-04-13 10:17:10 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-13 09:17:10 +0100 |
| commit | 933a24caa68d4d217207838bceabd5577838431c (patch) | |
| tree | de69b36c2d1438ed8d4d63f24fb96215067b1486 /src/managers/screenshare/ScreenshareFrame.cpp | |
| parent | 814337fdd2e0894c2451b258e605e9ab0b603b48 (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.cpp | 8 |
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; |
