summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Compositor.cpp')
-rw-r--r--src/Compositor.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index c68b5322..ab802a1a 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -890,6 +890,34 @@ void CCompositor::cleanupFadingOut(const int& monid) {
}
for (auto& ls : m_vSurfacesFadingOut) {
+
+ // sometimes somehow fucking happens wtf
+ bool exists = false;
+ for (auto& m : m_vMonitors) {
+ for (auto& lsl : m->m_aLayerSurfaceLists) {
+ for (auto& lsp : lsl) {
+ if (lsp.get() == ls) {
+ exists = true;
+ break;
+ }
+ }
+
+ if (exists)
+ break;
+ }
+
+ if (exists)
+ break;
+ }
+
+ if (!exists) {
+ m_vSurfacesFadingOut.erase(std::remove(m_vSurfacesFadingOut.begin(), m_vSurfacesFadingOut.end(), ls));
+
+ Debug::log(LOG, "Fading out a non-existent LS??");
+
+ return;
+ }
+
if (ls->monitorID != monid)
continue;