diff options
| author | UjinT34 <41110182+UjinT34@users.noreply.github.com> | 2026-03-25 16:37:53 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-25 13:37:53 +0000 |
| commit | 8196711aaa78c8f62e6f720636ef707783685036 (patch) | |
| tree | fc9362b4cc8410fd87276cae8ed272eba992e3c7 /src/managers | |
| parent | bbf6718c4fc55867be0db8946918ce03d3879f64 (diff) | |
screencopy: check share session state (#13839)
Diffstat (limited to 'src/managers')
| -rw-r--r-- | src/managers/screenshare/ScreenshareManager.cpp | 2 | ||||
| -rw-r--r-- | src/managers/screenshare/ScreenshareManager.hpp | 1 | ||||
| -rw-r--r-- | src/managers/screenshare/ScreenshareSession.cpp | 4 |
3 files changed, 6 insertions, 1 deletions
diff --git a/src/managers/screenshare/ScreenshareManager.cpp b/src/managers/screenshare/ScreenshareManager.cpp index 63f2bbbc..6a0f5b95 100644 --- a/src/managers/screenshare/ScreenshareManager.cpp +++ b/src/managers/screenshare/ScreenshareManager.cpp @@ -156,7 +156,7 @@ bool CScreenshareManager::isOutputBeingSSd(PHLMONITOR monitor) { return std::ranges::any_of(m_sessions, [monitor](const auto& s) { if (!s) return false; - return (s->m_type == SHARE_MONITOR || s->m_type == SHARE_REGION) && s->m_monitor == monitor; + return s->isActive() && (s->m_type == SHARE_MONITOR || s->m_type == SHARE_REGION) && s->m_monitor == monitor; }); } diff --git a/src/managers/screenshare/ScreenshareManager.hpp b/src/managers/screenshare/ScreenshareManager.hpp index 5a4ada5e..7f45f68d 100644 --- a/src/managers/screenshare/ScreenshareManager.hpp +++ b/src/managers/screenshare/ScreenshareManager.hpp @@ -45,6 +45,7 @@ namespace Screenshare { UP<CScreenshareFrame> nextFrame(bool overlayCursor); void stop(); + bool isActive(); // constraints const std::vector<DRMFormat>& allowedFormats() const; diff --git a/src/managers/screenshare/ScreenshareSession.cpp b/src/managers/screenshare/ScreenshareSession.cpp index 8dbfc72a..75f700ba 100644 --- a/src/managers/screenshare/ScreenshareSession.cpp +++ b/src/managers/screenshare/ScreenshareSession.cpp @@ -61,6 +61,10 @@ void CScreenshareSession::stop() { screenshareEvents(false); } +bool CScreenshareSession::isActive() { + return !m_stopped && m_sharing; +} + void CScreenshareSession::init() { uintptr_t ptr = m_type == SHARE_WINDOW && !m_window.expired() ? (uintptr_t)m_window.get() : (m_monitor.expired() ? (uintptr_t)nullptr : (uintptr_t)m_monitor.get()); LOGM(Log::TRACE, "Created screenshare session for ({}): {}, {:x}", m_type, m_name, ptr); |
