From 84a0fa0f34ccc82c1bbb961bac0dbe81c82e999c Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 5 Jun 2022 23:23:16 +0200 Subject: [PATCH] fix subsurfaces not damaging on unmap --- src/helpers/SubsurfaceTree.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/helpers/SubsurfaceTree.cpp b/src/helpers/SubsurfaceTree.cpp index 7ec3635a..064ca181 100644 --- a/src/helpers/SubsurfaceTree.cpp +++ b/src/helpers/SubsurfaceTree.cpp @@ -89,6 +89,20 @@ void SubsurfaceTree::destroySurfaceTree(SSurfaceTreeNode* pNode) { pNode->hyprListener_destroy.removeCallback(); pNode->hyprListener_newSubsurface.removeCallback(); + // damage + if (pNode->pSurface) { + wlr_box extents = {}; + wlr_surface_get_extends(pNode->pSurface, &extents); + + int lx = 0, ly = 0; + addSurfaceGlobalOffset(pNode, &lx, &ly); + + extents.x += lx; + extents.y += ly; + + g_pHyprRenderer->damageBox(&extents); + } + surfaceTreeNodes.remove(*pNode); Debug::log(LOG, "SurfaceTree Node removed"); @@ -162,6 +176,8 @@ void Events::listener_unmapSubsurface(void* owner, void* data) { extents.x += lx; extents.y += ly; + g_pHyprRenderer->damageBox(&extents); + SubsurfaceTree::destroySurfaceTree(subsurface->pChild); subsurface->pChild = nullptr; }