From b3a70b565e67ebf00bcf4ecbae54fc96e527828e Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Fri, 24 Mar 2023 18:44:42 +0000 Subject: [PATCH] subsurfaces: avoid reading destroyed surfaces --- src/helpers/SubsurfaceTree.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/helpers/SubsurfaceTree.cpp b/src/helpers/SubsurfaceTree.cpp index 92bfd448..43ff3be7 100644 --- a/src/helpers/SubsurfaceTree.cpp +++ b/src/helpers/SubsurfaceTree.cpp @@ -188,11 +188,12 @@ void Events::listener_unmapSubsurface(void* owner, void* data) { std::find_if(SubsurfaceTree::surfaceTreeNodes.begin(), SubsurfaceTree::surfaceTreeNodes.end(), [&](const SSurfaceTreeNode& other) { return &other == PNODE; }); if (IT != SubsurfaceTree::surfaceTreeNodes.end()) { - int lx = 0, ly = 0; - addSurfaceGlobalOffset(PNODE, &lx, &ly); - - wlr_box extents = {lx, ly, 0, 0}; if (PNODE->pSurface && PNODE->pSurface->exists()) { + int lx = 0, ly = 0; + addSurfaceGlobalOffset(PNODE, &lx, &ly); + + wlr_box extents = {lx, ly, 0, 0}; + extents.width = PNODE->pSurface->wlr()->current.width; extents.height = PNODE->pSurface->wlr()->current.height;