From cfcf260a6be685139e2136a7700f1aebfb1c7ed1 Mon Sep 17 00:00:00 2001 From: jmanc3 Date: Thu, 29 Jan 2026 11:41:47 -0600 Subject: [PATCH] Fix complex opaque region shapes --- src/render/pass/Pass.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/render/pass/Pass.cpp b/src/render/pass/Pass.cpp index 5a4a8221d..2443a1e18 100644 --- a/src/render/pass/Pass.cpp +++ b/src/render/pass/Pass.cpp @@ -58,8 +58,13 @@ void CRenderPass::simplify() { // scale and rounding is very particular so we have to use CBoxes scale and round functions if (opaque.getRects().size() == 1) opaque = opaque.getExtents().scale(g_pHyprOpenGL->m_renderData.pMonitor->m_scale).round(); - else - opaque.scale(g_pHyprOpenGL->m_renderData.pMonitor->m_scale); + else { + CRegion scaledRegion; + opaque.forEachRect([&scaledRegion] (const auto& RECT) { + scaledRegion.add(CBox(RECT.x1, RECT.y1, RECT.x2 - RECT.x1, RECT.y2 - RECT.y1).scale(g_pHyprOpenGL->m_renderData.pMonitor->m_scale).round()); + }); + opaque = scaledRegion; + } // if this intersects the liveBlur region, allow live blur to operate correctly. // do not occlude a border near it.