diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-07-28 22:15:56 +0200 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-07-28 22:15:56 +0200 |
| commit | 3f62a386bf421d2199a6239928afc4f8d3f3e708 (patch) | |
| tree | fd7bd229dd6acad4f54fd883af04d261dcb7e765 /src/render/Renderer.cpp | |
| parent | 4076a3b6d7930ea30799f180fec2f13e1819f3d7 (diff) | |
surface damage fixes
Diffstat (limited to 'src/render/Renderer.cpp')
| -rw-r--r-- | src/render/Renderer.cpp | 12 |
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) |
