aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--river/Layout.zig19
1 files changed, 12 insertions, 7 deletions
diff --git a/river/Layout.zig b/river/Layout.zig
index 351c116..34a96c0 100644
--- a/river/Layout.zig
+++ b/river/Layout.zig
@@ -159,13 +159,18 @@ fn handleRequest(layout: *river.LayoutV3, request: river.LayoutV3.Request, self:
if (layout_demand.serial == req.serial) layout_demand.apply(self);
}
- const new_name = util.gpa.dupeZ(u8, mem.sliceTo(req.layout_name, 0)) catch {
- log.err("out of memory", .{});
- return;
- };
- if (self.output.layout_name) |name| util.gpa.free(name);
- self.output.layout_name = new_name;
- self.output.status.sendLayoutName(self.output);
+ const new_name = mem.sliceTo(req.layout_name, 0);
+ if (self.output.layout_name == null or
+ !mem.eql(u8, self.output.layout_name.?, new_name))
+ {
+ const owned = util.gpa.dupeZ(u8, new_name) catch {
+ log.err("out of memory", .{});
+ return;
+ };
+ if (self.output.layout_name) |name| util.gpa.free(name);
+ self.output.layout_name = owned;
+ self.output.status.sendLayoutName(self.output);
+ }
},
}
}