diff --git a/src/events/Layers.cpp b/src/events/Layers.cpp index 0e2f49d5..431ebef1 100644 --- a/src/events/Layers.cpp +++ b/src/events/Layers.cpp @@ -72,6 +72,8 @@ void Events::listener_destroyLayerSurface(void* owner, void* data) { layersurface->fadingOut = true; } + layersurface->noProcess = true; + layersurface->hyprListener_commitLayerSurface.removeCallback(); layersurface->hyprListener_destroyLayerSurface.removeCallback(); layersurface->hyprListener_mapLayerSurface.removeCallback(); diff --git a/src/helpers/WLClasses.hpp b/src/helpers/WLClasses.hpp index 58b6ce72..768dcb45 100644 --- a/src/helpers/WLClasses.hpp +++ b/src/helpers/WLClasses.hpp @@ -30,6 +30,7 @@ struct SLayerSurface { CAnimatedVariable alpha; bool fadingOut = false; bool readyToDelete = false; + bool noProcess = false; bool forceBlur = false; diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index a7ad4607..c8154348 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -508,7 +508,7 @@ void CHyprRenderer::arrangeLayerArray(SMonitor* pMonitor, const std::listvecPosition.x, pMonitor->vecPosition.y, pMonitor->vecSize.x, pMonitor->vecSize.y}; for (auto& ls : layerSurfaces) { - if (ls->fadingOut || ls->readyToDelete || !ls->layerSurface) + if (ls->fadingOut || ls->readyToDelete || !ls->layerSurface || ls->noProcess) continue; const auto PLAYER = ls->layerSurface;