summaryrefslogtreecommitdiff
path: root/src/protocols/ExtWorkspace.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2025-11-21 14:45:59 +0000
committerVaxry <vaxry@vaxry.net>2025-11-21 14:46:05 +0000
commit79a27819230ce8c564293d2258a8c40002816450 (patch)
tree5e725ff43269c7c2ca30c6c4620fc575077b225e /src/protocols/ExtWorkspace.cpp
parentd66c9222b01de188c70cebc1ae82e169bf2a2ebc (diff)
protocols/workspace: fix crash in initial group sending
fixes #12419
Diffstat (limited to 'src/protocols/ExtWorkspace.cpp')
-rw-r--r--src/protocols/ExtWorkspace.cpp9
1 files changed, 6 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(WP<CExtWorkspaceManagerRe
if (output->client() == 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> CExtWorkspaceGroupResource::fromResource(wl_resou
return data ? data->m_self : WP<CExtWorkspaceGroupResource>();
}
+void CExtWorkspaceGroupResource::sendToWorkspaces() {
+ m_manager->sendGroupToWorkspaces(m_self);
+ m_manager->scheduleDone();
+}
+
void CExtWorkspaceGroupResource::workspaceEnter(const WP<CExtWorkspaceHandleV1>& 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<CExtWorkspaceGroupResource>(m_self, makeUnique<CExtWorkspaceGroupHandleV1>(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");