summaryrefslogtreecommitdiff
path: root/src/events/Monitors.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-05-06 16:06:21 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-05-06 16:06:21 +0200
commitff86f723b227b3f526904d422964322b3cbb4d7a (patch)
tree2ad5ad7ee18a32e1089d60fd14c21bdd365be71a /src/events/Monitors.cpp
parentb67eae722857f6f9e69f99e46dc8b6c83dad6a1c (diff)
Fix blur leaving strokes on full damage tracking
Diffstat (limited to 'src/events/Monitors.cpp')
-rw-r--r--src/events/Monitors.cpp17
1 files changed, 17 insertions, 0 deletions
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?