summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-07-28 22:15:56 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-07-28 22:15:56 +0200
commit3f62a386bf421d2199a6239928afc4f8d3f3e708 (patch)
treefd7bd229dd6acad4f54fd883af04d261dcb7e765 /src/render/Renderer.cpp
parent4076a3b6d7930ea30799f180fec2f13e1819f3d7 (diff)
surface damage fixes
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 6a42c29c..cb850f59 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -666,15 +666,21 @@ void CHyprRenderer::damageSurface(wlr_surface* pSurface, double x, double y) {
pixman_region32_translate(&damageBox, x, y);
+ pixman_region32_t damageBoxForEach;
+ pixman_region32_init(&damageBoxForEach);
+
for (auto& m : g_pCompositor->m_vMonitors) {
double lx = 0, ly = 0;
wlr_output_layout_output_coords(g_pCompositor->m_sWLROutputLayout, m->output, &lx, &ly);
- pixman_region32_translate(&damageBox, lx, ly);
- wlr_region_scale(&damageBox, &damageBox, m->scale);
+
+ wlr_region_scale(&damageBox, &damageBoxForEach, m->scale);
+ pixman_region32_translate(&damageBoxForEach, lx, ly);
+
wlr_output_damage_add(m->damage, &damageBox);
- pixman_region32_translate(&damageBox, -lx, -ly);
}
+ pixman_region32_fini(&damageBoxForEach);
+
static auto *const PLOGDAMAGE = &g_pConfigManager->getConfigValuePtr("debug:log_damage")->intValue;
if (*PLOGDAMAGE)