From 0de3f678984c55ff87bbf2d2f1d162072c16d560 Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Thu, 9 Mar 2023 23:14:26 +0100 Subject: river-status: only send layout name if changed --- river/Layout.zig | 19 ++++++++++++------- 1 file 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); + } }, } } -- cgit v1.2.3