summaryrefslogtreecommitdiff
path: root/src/protocols/core
diff options
context:
space:
mode:
authorPppp1116 <pcaiadoguerreiro@gmail.com>2026-04-03 13:24:22 +0100
committerVaxry <43317083+vaxerski@users.noreply.github.com>2026-04-04 08:26:24 -0400
commit0647b5449c5e5d7d314b03793232a13097fe753f (patch)
treefc7c35b47d6d7a616eba1173d2a03fcf78eb3725 /src/protocols/core
parent4c897c2d476d42c716dee254d151ff23c66ef53b (diff)
protocols: avoid repeated per-client work in hot paths
Diffstat (limited to 'src/protocols/core')
-rw-r--r--src/protocols/core/Output.cpp14
1 files changed, 8 insertions, 6 deletions
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<CWlOutput> resource_, PHLMONITOR pMonito
updateState();
- PROTO::compositor->forEachSurface([](SP<CWLSurfaceResource> surf) {
+ const auto PMONITOR = m_monitor.lock();
+ if (!PMONITOR)
+ return;
+
+ PROTO::compositor->forEachSurface([PMONITOR](SP<CWLSurfaceResource> surf) {
auto HLSurf = Desktop::View::CWLSurface::fromResource(surf);
if (!HLSurf)
@@ -41,12 +45,10 @@ CWLOutputResource::CWLOutputResource(SP<CWlOutput> 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);
});
}