diff options
| author | Ikalco <73481042+ikalco@users.noreply.github.com> | 2026-03-05 08:06:55 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-05 14:06:55 +0000 |
| commit | 803e81ac398ff56816321fbe24f013671cfebc7f (patch) | |
| tree | 9c3007c6b9f65f06d5969f03b2cf8c6c5e0f94fd /src/managers/screenshare/ScreenshareManager.cpp | |
| parent | 34c7cc7d38256f32f30a947f8b459df220149feb (diff) | |
screenshare: improve destroy logic of objects (#13554)
Diffstat (limited to 'src/managers/screenshare/ScreenshareManager.cpp')
| -rw-r--r-- | src/managers/screenshare/ScreenshareManager.cpp | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/src/managers/screenshare/ScreenshareManager.cpp b/src/managers/screenshare/ScreenshareManager.cpp index 57b9f6ef..70e2bf5e 100644 --- a/src/managers/screenshare/ScreenshareManager.cpp +++ b/src/managers/screenshare/ScreenshareManager.cpp @@ -145,17 +145,13 @@ WP<CScreenshareSession> CScreenshareManager::getManagedSession(eScreenshareType auto& session = *it; session->stoppedListener = session->m_session->m_events.stopped.listen([session = WP<SManagedSession>(session)]() { - std::erase_if(Screenshare::mgr()->m_managedSessions, [&](const auto& s) { return !s || session.expired() || s->m_session == session->m_session; }); + if (!session.expired()) + std::erase_if(Screenshare::mgr()->m_managedSessions, [&](const auto& s) { return s && s->m_session.get() == session->m_session.get(); }); }); return session->m_session; } -void CScreenshareManager::destroyClientSessions(wl_client* client) { - LOGM(Log::TRACE, "Destroy client sessions for {:x}", (uintptr_t)client); - std::erase_if(m_managedSessions, [&](const auto& session) { return !session || session->m_session->m_client == client; }); -} - bool CScreenshareManager::isOutputBeingSSd(PHLMONITOR monitor) { return std::ranges::any_of(m_pendingFrames, [monitor](const auto& f) { if (!f || !f->m_session) |
