aboutsummaryrefslogtreecommitdiff
path: root/src/layer_surface.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/layer_surface.zig')
-rw-r--r--src/layer_surface.zig20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/layer_surface.zig b/src/layer_surface.zig
index b9825e7..6aa1b9d 100644
--- a/src/layer_surface.zig
+++ b/src/layer_surface.zig
@@ -58,18 +58,18 @@ pub const LayerSurface = struct {
fn handleDestroy(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void {
const layer_surface = @fieldParentPtr(LayerSurface, "listen_destroy", listener.?);
- Log.Debug.log("Layer surface '{}' destroyed", .{layer_surface.wlr_layer_surface.namespace});
-
- const node = @fieldParentPtr(std.TailQueue(LayerSurface).Node, "data", layer_surface);
- layer_surface.output.layers[@intCast(usize, @enumToInt(layer_surface.layer))].remove(node);
- layer_surface.output.root.server.allocator.destroy(node);
+ const output = layer_surface.output;
- layer_surface.output.arrangeLayers();
+ Log.Debug.log("Layer surface '{}' destroyed", .{layer_surface.wlr_layer_surface.namespace});
// Remove listeners active the entire lifetime of the layer surface
- c.wl_list_remove(&layer_surface.listen_destroy);
- c.wl_list_remove(&layer_surface.listen_map);
- c.wl_list_remove(&layer_surface.listen_unmap);
+ c.wl_list_remove(&layer_surface.listen_destroy.link);
+ c.wl_list_remove(&layer_surface.listen_map.link);
+ c.wl_list_remove(&layer_surface.listen_unmap.link);
+
+ const node = @fieldParentPtr(std.TailQueue(LayerSurface).Node, "data", layer_surface);
+ output.layers[@intCast(usize, @enumToInt(layer_surface.layer))].remove(node);
+ output.root.server.allocator.destroy(node);
}
fn handleMap(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void {
@@ -101,6 +101,8 @@ pub const LayerSurface = struct {
// remove listeners only active while the layer surface is mapped
c.wl_list_remove(&layer_surface.listen_commit.link);
c.wl_list_remove(&layer_surface.listen_new_popup.link);
+
+ layer_surface.output.arrangeLayers();
}
fn handleCommit(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void {