aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--river/Layout.zig13
1 files changed, 7 insertions, 6 deletions
diff --git a/river/Layout.zig b/river/Layout.zig
index 9fe6109..a8fe83b 100644
--- a/river/Layout.zig
+++ b/river/Layout.zig
@@ -173,13 +173,14 @@ pub fn destroy(self: *Self) void {
const node = @fieldParentPtr(std.TailQueue(Self).Node, "data", self);
self.output.layouts.remove(node);
- // If we are the currently active layout of an output, clean up. The output
- // will always end up with no layout at this point, so we directly start the
- // transaction.
- if (self == self.output.pending.layout) {
+ // If we are the currently active layout of an output, clean up.
+ if (self.output.pending.layout == self) {
self.output.pending.layout = null;
- self.output.arrangeViews();
- server.root.startTransaction();
+ if (self.output.layout_demand) |*layout_demand| {
+ layout_demand.deinit();
+ self.output.layout_demand = null;
+ server.root.notifyLayoutDemandDone();
+ }
}
self.layout.setHandler(?*c_void, handleRequestInert, null, null);