From e45e606fbd7f7e805eb5a1c81482ea44b66e88d2 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Sat, 24 Aug 2024 15:22:10 +0200 Subject: [PATCH] layersurface: don't unref from monitor until dtor reee --- src/desktop/LayerSurface.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/desktop/LayerSurface.cpp b/src/desktop/LayerSurface.cpp index 46aea86c..8d13bf19 100644 --- a/src/desktop/LayerSurface.cpp +++ b/src/desktop/LayerSurface.cpp @@ -71,6 +71,12 @@ CLayerSurface::~CLayerSurface() { surface->unassign(); g_pHyprRenderer->makeEGLCurrent(); std::erase_if(g_pHyprOpenGL->m_mLayerFramebuffers, [&](const auto& other) { return other.first.expired() || other.first.lock() == self.lock(); }); + + for (auto& mon : g_pCompositor->m_vRealMonitors) { + for (auto& lsl : mon->m_aLayerSurfaceLayers) { + std::erase_if(lsl, [this](auto& ls) { return ls.expired() || ls.get() == this; }); + } + } } void CLayerSurface::onDestroy() { @@ -107,12 +113,6 @@ void CLayerSurface::onDestroy() { g_pHyprRenderer->damageBox(&geomFixed); } - for (auto& mon : g_pCompositor->m_vRealMonitors) { - for (auto& lsl : mon->m_aLayerSurfaceLayers) { - std::erase_if(lsl, [this](auto& ls) { return ls.expired() || ls.get() == this; }); - } - } - readyToDelete = true; layerSurface.reset(); if (surface)