git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commitade776a3a90c8ce4fe327cc8617ffe9a3f0c39fe
parentd53fc1eefb
authorIsaac Freund <[email protected]>
date2020-05-19 11:08
Fix crash destroying output with layer surfaces

 src/Output.zig | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/Output.zig b/src/Output.zig
index 7668928..67dedbf 100644
--- a/src/Output.zig
+++ b/src/Output.zig
@@ -502,14 +502,14 @@ fn handleDestroy(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void {
     for (self.layers) |*layer, layer_idx| {
         while (layer.pop()) |node| {
             const layer_surface = &node.data;
-            c.wlr_layer_surface_v1_close(layer_surface.wlr_layer_surface);
             // We need to move the closing layer surface to the noop output
-            // since it is not immediately destoryed. This just a request
+            // since it may not be immediately destoryed. This just a request
             // to close which will trigger unmap and destroy events in
             // response, and the LayerSurface needs a valid output to
             // handle them.
             root.noop_output.layers[layer_idx].prepend(node);
             layer_surface.output = &root.noop_output;
+            c.wlr_layer_surface_v1_close(layer_surface.wlr_layer_surface);
         }
     }