summaryrefslogtreecommitdiff
path: root/src/events/Layers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/events/Layers.cpp')
-rw-r--r--src/events/Layers.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/events/Layers.cpp b/src/events/Layers.cpp
index f9c98585..86e2ca1a 100644
--- a/src/events/Layers.cpp
+++ b/src/events/Layers.cpp
@@ -58,6 +58,23 @@ void Events::listener_destroyLayerSurface(void* owner, void* data) {
Debug::log(LOG, "LayerSurface %x destroyed", layersurface->layerSurface);
+ if (!layersurface->fadingOut) {
+ if (layersurface->layerSurface->mapped) {
+ Debug::log(LOG, "LayerSurface wasn't unmapped, making a snapshot now!");
+
+ // make a snapshot and start fade
+ // layersurfaces aren't required to unmap before destroy
+ g_pHyprOpenGL->makeLayerSnapshot(layersurface);
+ layersurface->alpha = 0.f;
+
+ layersurface->fadingOut = true;
+ } else {
+ Debug::log(LOG, "Removing LayerSurface that wasn't mapped.");
+ layersurface->alpha.setValueAndWarp(0.f);
+ layersurface->fadingOut = true;
+ }
+ }
+
if (layersurface->layerSurface->mapped)
layersurface->layerSurface->mapped = false;