diff --git a/river/Output.zig b/river/Output.zig index be6a5bb..d4490c3 100644 --- a/river/Output.zig +++ b/river/Output.zig @@ -393,11 +393,15 @@ fn sendLayerConfigures( usable_box.* = new_usable_box; } - layer_surface.popup_tree.node.setPosition( - layer_surface.scene_layer_surface.tree.node.x, - layer_surface.scene_layer_surface.tree.node.y, - ); - layer_surface.scene_layer_surface.tree.node.subsurfaceTreeSetClip(&full_box); + const x = layer_surface.scene_layer_surface.tree.node.x; + const y = layer_surface.scene_layer_surface.tree.node.y; + layer_surface.popup_tree.node.setPosition(x, y); + layer_surface.scene_layer_surface.tree.node.subsurfaceTreeSetClip(&.{ + .x = -x, + .y = -y, + .width = full_box.width, + .height = full_box.height, + }); } } } @@ -547,7 +551,9 @@ fn renderAndCommit(output: *Output, scene_output: *wlr.SceneOutput) !void { const control = server.root.gamma_control_manager.getControl(output.wlr_output); if (!wlr.GammaControlV1.apply(control, &state)) return error.OutOfMemory; - if (!output.wlr_output.testState(&state)) { + // TODO(wlroots): remove this isHeadless() workaround after upstream fix is available + // in a release: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4868 + if (!output.wlr_output.testState(&state) or output.wlr_output.isHeadless()) { wlr.GammaControlV1.sendFailedAndDestroy(control); state.clearGammaLut(); // If the backend does not support gamma LUTs it will reject any