mirror of
https://github.com/hyprwm/Hyprland.git
synced 2026-09-25 07:39:39 -05:00
internal: fix null deref in setWindowFullscreenInternal when fullscreen state stale (#14725)
This commit is contained in:
@@ -2196,6 +2196,8 @@ void CCompositor::changeWindowFullscreenModeClient(const PHLWINDOW PWINDOW, cons
|
||||
|
||||
// TODO: move fs functions to Desktop::
|
||||
void CCompositor::setWindowFullscreenInternal(const PHLWINDOW PWINDOW, const eFullscreenMode MODE) {
|
||||
if (!PWINDOW)
|
||||
return;
|
||||
if (PWINDOW->m_ruleApplicator->syncFullscreen().valueOrDefault())
|
||||
setWindowFullscreenState(PWINDOW, Desktop::View::SFullscreenState{.internal = MODE, .client = MODE});
|
||||
else
|
||||
|
||||
@@ -1820,6 +1820,10 @@ void CWindow::mapWindow() {
|
||||
Desktop::focusState()->rawMonitorFocus(g_pCompositor->getMonitorFromVector({}));
|
||||
PMONITOR = Desktop::focusState()->monitor();
|
||||
}
|
||||
if (!PMONITOR || (!PMONITOR->m_activeSpecialWorkspace && !PMONITOR->m_activeWorkspace)) {
|
||||
Log::logger->log(Log::ERR, "mapWindow: no valid monitor/workspace, aborting map for {:x}", (uintptr_t)this);
|
||||
return;
|
||||
}
|
||||
auto PWORKSPACE = PMONITOR->m_activeSpecialWorkspace ? PMONITOR->m_activeSpecialWorkspace : PMONITOR->m_activeWorkspace;
|
||||
m_monitor = PMONITOR;
|
||||
m_workspace = PWORKSPACE;
|
||||
|
||||
@@ -29,8 +29,11 @@ CScreenshareFrame::~CScreenshareFrame() {
|
||||
if (m_failed || !m_shared)
|
||||
return;
|
||||
|
||||
if (!m_copied && m_callback)
|
||||
m_callback(RESULT_NOT_COPIED);
|
||||
if (!m_copied && m_callback) {
|
||||
FScreenshareCallback cb;
|
||||
std::swap(cb, m_callback);
|
||||
cb(RESULT_NOT_COPIED);
|
||||
}
|
||||
}
|
||||
|
||||
bool CScreenshareFrame::done() const {
|
||||
|
||||
Reference in New Issue
Block a user