From 0647b5449c5e5d7d314b03793232a13097fe753f Mon Sep 17 00:00:00 2001 From: Pppp1116 Date: Fri, 3 Apr 2026 13:24:22 +0100 Subject: protocols: avoid repeated per-client work in hot paths --- src/protocols/core/Output.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src/protocols/core/Output.cpp') diff --git a/src/protocols/core/Output.cpp b/src/protocols/core/Output.cpp index dd9c3166..9278eb95 100644 --- a/src/protocols/core/Output.cpp +++ b/src/protocols/core/Output.cpp @@ -30,7 +30,11 @@ CWLOutputResource::CWLOutputResource(SP resource_, PHLMONITOR pMonito updateState(); - PROTO::compositor->forEachSurface([](SP surf) { + const auto PMONITOR = m_monitor.lock(); + if (!PMONITOR) + return; + + PROTO::compositor->forEachSurface([PMONITOR](SP surf) { auto HLSurf = Desktop::View::CWLSurface::fromResource(surf); if (!HLSurf) @@ -41,12 +45,10 @@ CWLOutputResource::CWLOutputResource(SP resource_, PHLMONITOR pMonito if (!GEOMETRY.has_value()) return; - for (auto& m : g_pCompositor->m_monitors) { - if (!m->logicalBox().expand(-4).overlaps(*GEOMETRY)) - continue; + if (!PMONITOR->logicalBox().expand(-4).overlaps(*GEOMETRY)) + return; - surf->enter(m); - } + surf->enter(PMONITOR); }); } -- cgit v1.2.3