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

commitd6811e66b4681aa1f5da6fe6814f1fbcc8e53884
parent0b85e2c059
authorIsaac Freund <[email protected]>
date2026-01-04 16:16
Output: ensure river_output_v1.wl_output is sent

Currently this event is only sent to the first window manager to see an
output. If the window manager is killed and a new one started, the
river_output_v1.wl_output event is not sent.

 river/Output.zig        | 2 ++
 river/OutputManager.zig | 1 -
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/river/Output.zig b/river/Output.zig
index 7b5baf5..6dff8ac 100644
--- a/river/Output.zig
+++ b/river/Output.zig
@@ -307,6 +307,7 @@ pub fn manageStart(output: *Output) void {
                 output_v1.setHandler(?*anyopaque, handleRequestInert, null, null);
                 output.layer_shell.makeInert();
                 output.object = null;
+                output.sent_wl_output = false;
             }
 
             output.sent = output.scheduled;
@@ -348,6 +349,7 @@ fn handleRequestInert(
 
 fn handleObjectDestroy(_: *river.OutputV1, output: *Output) void {
     output.object = null;
+    output.sent_wl_output = false;
 }
 
 fn handleRequest(
diff --git a/river/OutputManager.zig b/river/OutputManager.zig
index 2a3843f..cabee44 100644
--- a/river/OutputManager.zig
+++ b/river/OutputManager.zig
@@ -262,7 +262,6 @@ pub fn commitOutputState(om: *OutputManager) void {
                 },
                 .disabled_hard => {
                     om.output_layout.remove(output.wlr_output.?);
-                    output.sent_wl_output = false;
                 },
                 .destroying => unreachable,
             }