From ff86f723b227b3f526904d422964322b3cbb4d7a Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Fri, 6 May 2022 16:06:21 +0200 Subject: Fix blur leaving strokes on full damage tracking --- src/events/Monitors.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/events/Monitors.cpp') diff --git a/src/events/Monitors.cpp b/src/events/Monitors.cpp index bb8fbe0a..6d0e57d2 100644 --- a/src/events/Monitors.cpp +++ b/src/events/Monitors.cpp @@ -183,6 +183,23 @@ void Events::listener_monitorFrame(void* owner, void* data) { // if we have no tracking or full tracking, invalidate the entire monitor if (DTMODE == DAMAGE_TRACKING_NONE || DTMODE == DAMAGE_TRACKING_MONITOR) { pixman_region32_union_rect(&damage, &damage, 0, 0, (int)PMONITOR->vecSize.x, (int)PMONITOR->vecSize.y); + + pixman_region32_copy(&g_pHyprOpenGL->m_rOriginalDamageRegion, &damage); + } else { + // if we use blur we need to expand the damage for proper blurring + if (g_pConfigManager->getInt("decoration:blur") == 1) { + // TODO: can this be optimized? + const auto BLURSIZE = g_pConfigManager->getInt("decoration:blur_size"); + const auto BLURPASSES = g_pConfigManager->getInt("decoration:blur_passes"); + + const auto BLURRADIUS = BLURSIZE * BLURPASSES * 2; // is this 2? I don't know but 2 works. + + pixman_region32_copy(&g_pHyprOpenGL->m_rOriginalDamageRegion, &damage); + + // now, prep the damage, get the extended damage region + wlr_region_expand(&damage, &damage, BLURRADIUS); // expand for proper blurring + } + } // TODO: this is getting called with extents being 0,0,0,0 should it be? -- cgit v1.2.3