From 79a27819230ce8c564293d2258a8c40002816450 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Fri, 21 Nov 2025 14:45:59 +0000 Subject: [PATCH] protocols/workspace: fix crash in initial group sending fixes #12419 --- src/protocols/ExtWorkspace.cpp | 9 ++++++--- src/protocols/ExtWorkspace.hpp | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/protocols/ExtWorkspace.cpp b/src/protocols/ExtWorkspace.cpp index 8b6c010d..a0b570eb 100644 --- a/src/protocols/ExtWorkspace.cpp +++ b/src/protocols/ExtWorkspace.cpp @@ -31,9 +31,6 @@ CExtWorkspaceGroupResource::CExtWorkspaceGroupResource(WPclient() == m_resource->client()) m_resource->sendOutputEnter(output->getResource()->resource()); }); - - m_manager->sendGroupToWorkspaces(m_self); - m_manager->scheduleDone(); } bool CExtWorkspaceGroupResource::good() const { @@ -46,6 +43,11 @@ WP CExtWorkspaceGroupResource::fromResource(wl_resou return data ? data->m_self : WP(); } +void CExtWorkspaceGroupResource::sendToWorkspaces() { + m_manager->sendGroupToWorkspaces(m_self); + m_manager->scheduleDone(); +} + void CExtWorkspaceGroupResource::workspaceEnter(const WP& handle) { m_resource->sendWorkspaceEnter(handle.get()); } @@ -265,6 +267,7 @@ void CExtWorkspaceManagerResource::onMonitorCreated(const PHLMONITOR& monitor) { auto& group = PROTO::extWorkspace->m_groups.emplace_back( makeUnique(m_self, makeUnique(m_resource->client(), m_resource->version(), 0), monitor)); group->m_self = group; + group->sendToWorkspaces(); if UNLIKELY (!group->good()) { LOGM(ERR, "Couldn't create a workspace group object"); diff --git a/src/protocols/ExtWorkspace.hpp b/src/protocols/ExtWorkspace.hpp index efaac3fe..ba4aeeae 100644 --- a/src/protocols/ExtWorkspace.hpp +++ b/src/protocols/ExtWorkspace.hpp @@ -21,6 +21,8 @@ class CExtWorkspaceGroupResource { void workspaceEnter(const WP&); void workspaceLeave(const WP&); + void sendToWorkspaces(); + PHLMONITORREF m_monitor; private: