summaryrefslogtreecommitdiff
path: root/src/protocols/ForeignToplevelWlr.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-06-12 23:28:52 +0200
committerVaxry <vaxry@vaxry.net>2024-06-12 23:28:52 +0200
commit0e18da8467136806d191f84c88aa7536453869e0 (patch)
treeb1cfcad6004519d2c19b7a146c50a00faae118b9 /src/protocols/ForeignToplevelWlr.cpp
parent18ee9ece9cec51daa75fbf765d9fa6b72ef898e5 (diff)
foreign-toplevel: fixup output resource finding
fixes #6457
Diffstat (limited to 'src/protocols/ForeignToplevelWlr.cpp')
-rw-r--r--src/protocols/ForeignToplevelWlr.cpp20
1 files changed, 7 insertions, 13 deletions
diff --git a/src/protocols/ForeignToplevelWlr.cpp b/src/protocols/ForeignToplevelWlr.cpp
index 8224f495..14800393 100644
--- a/src/protocols/ForeignToplevelWlr.cpp
+++ b/src/protocols/ForeignToplevelWlr.cpp
@@ -122,25 +122,19 @@ void CForeignToplevelHandleWlr::sendMonitor(CMonitor* pMonitor) {
if (lastMonitorID == (int64_t)pMonitor->ID)
return;
- const auto CLIENT = resource->client();
-
- struct wl_resource* outputResource;
+ const auto CLIENT = resource->client();
if (const auto PLASTMONITOR = g_pCompositor->getMonitorFromID(lastMonitorID); PLASTMONITOR) {
- wl_resource_for_each(outputResource, &PLASTMONITOR->output->resources) {
- if (wl_resource_get_client(outputResource) != CLIENT)
- continue;
+ const auto OLDRESOURCE = PROTO::outputs.at(PLASTMONITOR->szName)->outputResourceFrom(CLIENT);
- resource->sendOutputLeave(outputResource);
- }
+ if (OLDRESOURCE)
+ resource->sendOutputLeave(OLDRESOURCE->getResource()->resource());
}
- wl_resource_for_each(outputResource, &pMonitor->output->resources) {
- if (wl_resource_get_client(outputResource) != CLIENT)
- continue;
+ const auto NEWRESOURCE = PROTO::outputs.at(pMonitor->szName)->outputResourceFrom(CLIENT);
- resource->sendOutputEnter(outputResource);
- }
+ if (NEWRESOURCE)
+ resource->sendOutputEnter(NEWRESOURCE->getResource()->resource());
lastMonitorID = pMonitor->ID;
}