From 4ab3a40398d1331b69e033ab14533524c554a002 Mon Sep 17 00:00:00 2001 From: Eren <51189118+astridlyre@users.noreply.github.com> Date: Fri, 1 May 2026 15:50:02 -0700 Subject: screenshare: adjust session cleanup and event emission order (#14229) * fix(screenshare): adjust session cleanup and event emission order Revised the handling of `stoppedListener` initialization in `getManagedSession` to ensure correct scoping and lifecycle management. Updated the `stop` method in `CScreenshareSession` to adjust the order of `screenshareEvents` and `stopped.emit()` to prevent potential use-after-free scenarios. * fix(screenshare): ensure managedSession removal uses consistent target reference This change updates the lambda in the stopped listener to use a pre-fetched target pointer for comparison when erasing sessions. * fix(screenshare): use early-return and smart ptr comparison in session cleanup --- src/managers/screenshare/ScreenshareSession.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/managers/screenshare/ScreenshareSession.cpp') diff --git a/src/managers/screenshare/ScreenshareSession.cpp b/src/managers/screenshare/ScreenshareSession.cpp index e3676ec0..1f7aeb88 100644 --- a/src/managers/screenshare/ScreenshareSession.cpp +++ b/src/managers/screenshare/ScreenshareSession.cpp @@ -56,9 +56,9 @@ void CScreenshareSession::stop() { if (m_stopped) return; m_stopped = true; - m_events.stopped.emit(); screenshareEvents(false); + m_events.stopped.emit(); } bool CScreenshareSession::isActive() { -- cgit v1.2.3