summaryrefslogtreecommitdiff
path: root/src/protocols/Screencopy.cpp
diff options
context:
space:
mode:
author0xFMD <30713087+0xFMD@users.noreply.github.com>2025-09-22 14:26:14 +0300
committerGitHub <noreply@github.com>2025-09-22 12:26:14 +0100
commit26f293523ad6b7c8120b2e21a1dd6d0e5b512863 (patch)
tree8ba89fd1510ed5a7b1b338f76047e571e36366cf /src/protocols/Screencopy.cpp
parent45f007d41228aa18bbd81bc5a6eb3148afdcc800 (diff)
renderer: add "noscreenshare" layer rule (#11664)
Diffstat (limited to 'src/protocols/Screencopy.cpp')
-rw-r--r--src/protocols/Screencopy.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/protocols/Screencopy.cpp b/src/protocols/Screencopy.cpp
index 3a2e4b4a..80538623 100644
--- a/src/protocols/Screencopy.cpp
+++ b/src/protocols/Screencopy.cpp
@@ -211,6 +211,22 @@ void CScreencopyFrame::renderMon() {
g_pHyprOpenGL->setRenderModifEnabled(true);
g_pHyprOpenGL->popMonitorTransformEnabled();
+ for (auto const& l : g_pCompositor->m_layers) {
+ if (!l->m_noScreenShare)
+ continue;
+
+ if UNLIKELY ((!l->m_mapped && !l->m_fadingOut) || l->m_alpha->value() == 0.f)
+ continue;
+
+ const auto REALPOS = l->m_realPosition->value();
+ const auto REALSIZE = l->m_realSize->value();
+
+ const auto noScreenShareBox =
+ CBox{REALPOS.x, REALPOS.y, std::max(REALSIZE.x, 5.0), std::max(REALSIZE.y, 5.0)}.translate(-m_monitor->m_position).scale(m_monitor->m_scale).translate(-m_box.pos());
+
+ g_pHyprOpenGL->renderRect(noScreenShareBox, Colors::BLACK, {});
+ }
+
for (auto const& w : g_pCompositor->m_windows) {
if (!w->m_windowData.noScreenShare.valueOrDefault())
continue;