diff options
Diffstat (limited to 'src/Compositor.cpp')
| -rw-r--r-- | src/Compositor.cpp | 28 |
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; |
