aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--river/Output.zig10
-rw-r--r--river/Root.zig10
2 files changed, 13 insertions, 7 deletions
diff --git a/river/Output.zig b/river/Output.zig
index 15c2be4..b28fb66 100644
--- a/river/Output.zig
+++ b/river/Output.zig
@@ -381,15 +381,13 @@ fn handleDestroy(listener: *wl.Listener(*wlr.Output), _: *wlr.Output) void {
const node = @fieldParentPtr(std.TailQueue(Self).Node, "data", output);
util.gpa.destroy(node);
+
+ server.root.applyPending();
}
fn handleEnable(listener: *wl.Listener(*wlr.Output), wlr_output: *wlr.Output) void {
const self = @fieldParentPtr(Self, "enable", listener);
- // Add the output to root.outputs and the output layout if it has not
- // already been added.
- if (wlr_output.enabled) server.root.addOutput(self);
-
// We can't assert the current state of normal_content/locked_content
// here as this output may be newly created.
if (wlr_output.enabled) {
@@ -409,6 +407,10 @@ fn handleEnable(listener: *wl.Listener(*wlr.Output), wlr_output: *wlr.Output) vo
// Disabling and re-enabling an output always blanks it.
self.lock_render_state = .blanked;
}
+
+ // Add the output to root.outputs and the output layout if it has not
+ // already been added.
+ if (wlr_output.enabled) server.root.addOutput(self);
}
fn handleMode(listener: *wl.Listener(*wlr.Output), _: *wlr.Output) void {
diff --git a/river/Root.zig b/river/Root.zig
index 3c8a4b3..fb5379c 100644
--- a/river/Root.zig
+++ b/river/Root.zig
@@ -295,8 +295,7 @@ pub fn removeOutput(root: *Self, output: *Output) void {
}
output.status.deinit();
-
- root.applyPending();
+ output.status.init();
}
/// Add the output to self.outputs and the output layout if it has not
@@ -338,8 +337,9 @@ pub fn addOutput(root: *Self, output: *Output) void {
seat.focusOutput(output);
}
}
- root.applyPending();
}
+
+ root.applyPending();
}
/// Trigger asynchronous application of pending state for all outputs and views.
@@ -546,6 +546,8 @@ fn commitTransaction(root: *Self) void {
assert(root.inflight_layout_demands == 0);
assert(root.inflight_configures == 0);
+ std.log.scoped(.transaction).debug("commiting transaction", .{});
+
{
var it = root.hidden.inflight.focus_stack.safeIterator(.forward);
while (it.next()) |view| {
@@ -656,6 +658,8 @@ fn handleManagerApply(
const self = @fieldParentPtr(Self, "manager_apply", listener);
defer config.destroy();
+ std.log.scoped(.output_manager).info("applying output configuration", .{});
+
self.processOutputConfig(config, .apply);
// Send the config that was actually applied