summaryrefslogtreecommitdiff
path: root/src/managers/screenshare/ScreenshareSession.cpp
diff options
context:
space:
mode:
authorssareta <ssareta@protonmail.com>2026-03-20 10:04:52 +1300
committerGitHub <noreply@github.com>2026-03-19 21:04:52 +0000
commitb940b0d2c197841b0f648598ee782dbaf9e0a89b (patch)
tree60aaae9ae2314b1c20ccb6a0531dfd62a5200507 /src/managers/screenshare/ScreenshareSession.cpp
parent3b902a47fe0126c9e0fb7fbe2e47b7c1db6b39cf (diff)
screencopy: fix crash in screensharing toplevel with invalid handle (#13781)
Diffstat (limited to 'src/managers/screenshare/ScreenshareSession.cpp')
-rw-r--r--src/managers/screenshare/ScreenshareSession.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/managers/screenshare/ScreenshareSession.cpp b/src/managers/screenshare/ScreenshareSession.cpp
index 5557746c..8dbfc72a 100644
--- a/src/managers/screenshare/ScreenshareSession.cpp
+++ b/src/managers/screenshare/ScreenshareSession.cpp
@@ -9,10 +9,16 @@
using namespace Screenshare;
CScreenshareSession::CScreenshareSession(PHLMONITOR monitor, wl_client* client) : m_type(SHARE_MONITOR), m_monitor(monitor), m_client(client) {
+ if UNLIKELY (!m_monitor)
+ return;
+
init();
}
CScreenshareSession::CScreenshareSession(PHLWINDOW window, wl_client* client) : m_type(SHARE_WINDOW), m_window(window), m_client(client) {
+ if UNLIKELY (!m_window)
+ return;
+
m_listeners.windowDestroyed = m_window->m_events.unmap.listen([this]() { stop(); });
m_listeners.windowSizeChanged = m_window->m_events.resize.listen([this]() {
calculateConstraints();
@@ -34,6 +40,9 @@ CScreenshareSession::CScreenshareSession(PHLWINDOW window, wl_client* client) :
CScreenshareSession::CScreenshareSession(PHLMONITOR monitor, CBox captureRegion, wl_client* client) :
m_type(SHARE_REGION), m_monitor(monitor), m_captureBox(captureRegion), m_client(client) {
+ if UNLIKELY (!m_monitor)
+ return;
+
init();
}