Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git
Window: fix assertion failure on wm restart
Fixes: 6bdb5055152e0f4570c3ea27e1f1c03717b50b2b
river/Window.zig | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/river/Window.zig b/river/Window.zig
index 72699db..8ecb8a1 100644
--- a/river/Window.zig
+++ b/river/Window.zig
@@ -412,14 +412,16 @@ pub fn manageStart(window: *Window) void {
window.node.link.remove();
server.wm.rendering_requested.list.append(&window.node);
- if (wlr.ExtForeignToplevelHandleV1.create(server.foreign_toplevel_list, &.{
- .title = window.getTitle(),
- .app_id = window.getAppId(),
- })) |handle| {
- assert(window.foreign_toplevel_handle == null);
- window.foreign_toplevel_handle = handle;
- } else |_| {
- log.err("failed to create ext foreign toplevel handle", .{});
+ // A handle may have already been created if the window manager is restarted.
+ if (window.foreign_toplevel_handle == null) {
+ if (wlr.ExtForeignToplevelHandleV1.create(server.foreign_toplevel_list, &.{
+ .title = window.getTitle(),
+ .app_id = window.getAppId(),
+ })) |handle| {
+ window.foreign_toplevel_handle = handle;
+ } else |_| {
+ log.err("failed to create ext foreign toplevel handle", .{});
+ }
}
break :blk window_v1;