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.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/events/Layers.cpp b/src/events/Layers.cpp
index d5ad2245..7baeda67 100644
--- a/src/events/Layers.cpp
+++ b/src/events/Layers.cpp
@@ -58,7 +58,12 @@ void Events::listener_destroyLayerSurface(void* owner, void* data) {
Debug::log(LOG, "LayerSurface %x destroyed", layersurface->layerSurface);
- if (!layersurface->fadingOut) {
+ const auto PMONITOR = g_pCompositor->getMonitorFromID(layersurface->monitorID);
+
+ if (!g_pCompositor->getMonitorFromID(layersurface->monitorID))
+ Debug::log(WARN, "Layersurface destroyed on an invalid monitor (removed?)");
+
+ if (!layersurface->fadingOut && PMONITOR) {
Debug::log(LOG, "Removing LayerSurface that wasn't mapped.");
layersurface->alpha.setValueAndWarp(0.f);
layersurface->fadingOut = true;
@@ -70,8 +75,6 @@ void Events::listener_destroyLayerSurface(void* owner, void* data) {
layersurface->hyprListener_unmapLayerSurface.removeCallback();
layersurface->hyprListener_newPopup.removeCallback();
- const auto PMONITOR = g_pCompositor->getMonitorFromID(layersurface->monitorID);
-
// rearrange to fix the reserved areas
if (PMONITOR) {
g_pHyprRenderer->arrangeLayersForMonitor(PMONITOR->ID);
@@ -131,6 +134,11 @@ void Events::listener_unmapLayerSurface(void* owner, void* data) {
Debug::log(LOG, "LayerSurface %x unmapped", layersurface->layerSurface);
+ if (!g_pCompositor->getMonitorFromID(layersurface->monitorID)) {
+ Debug::log(WARN, "Layersurface unmapping on invalid monitor (removed?) ignoring.");
+ return;
+ }
+
// make a snapshot and start fade
g_pHyprOpenGL->makeLayerSnapshot(layersurface);
layersurface->alpha = 0.f;