Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package river for openSUSE:Factory checked in at 2023-02-13 16:40:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/river (Old) and /work/SRC/openSUSE:Factory/.river.new.1848 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "river" Mon Feb 13 16:40:53 2023 rev:2 rq:1064745 version:0.2.4 Changes: -------- --- /work/SRC/openSUSE:Factory/river/river.changes 2023-02-03 22:17:55.807555557 +0100 +++ /work/SRC/openSUSE:Factory/.river.new.1848/river.changes 2023-02-13 16:42:59.800109725 +0100 @@ -1,0 +2,42 @@ +Sun Feb 12 20:49:58 UTC 2023 - socvirnyl.est...@gmail.com + +- Update to version 0.2.4: + * build: bump version to 0.2.4 + * Seat: guard setFocusRaw() usage while locked + * docs: remove repology badge from readme + * docs: fix typos in riverctl man page + * session-lock: fix assertion failure on hot-plug while locked + * wlr-output-management: apply adaptive sync state + * build: bump version to 0.2.4-dev + * build: bump version to 0.2.3 + * idle-inhibit: fix use-after-free + * session-lock: properly handle disabled outputs + * View: fix pointer comparison in notifyTitle() + * Cursor: fix incorrect lock manager state assertion + * command/layout: fix a memory leak + * Seat: rework Xwayland Override Redirect focus + * Seat: keep parent Xwayland view of a focused OR surface activated + * deps: update zig-wayland to fix build on aarch64 + * build: bump version to 0.2.3-dev + * build: bump version to 0.2.2 + * flags: further cleanup after Zig 0.10 + * deps: update to Zig 0.10 + * build: bump version to 0.2.2-dev + * build: bump version to 0.2.1 + * render: fix rounding for fractional scaling + * session-lock: fix assertion failure on abnormal client behavior + * session-lock: fix assertion failure due to race + * session-lock: wait for present before locking + * rivertile: fix code to disallow 0 main count + * render: premultiply alpha for user-provided colors + * completions: add keyboard-layout + * ci: Use meson setup command + * river: fix bug in snap down / right + * build: bump version to 0.2.1-dev + +------------------------------------------------------------------- +Wed Feb 8 08:34:01 UTC 2023 - Soc Virnyl Estela <socvirnyl.est...@gmail.com> + +- Fix group name of river-devel as "Development/Libraries/Other" + +------------------------------------------------------------------- Old: ---- river-0.2.0+g24.obscpio river-0.2.0+g24.tar.xz New: ---- river-0.2.4.obscpio river-0.2.4.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ river.spec ++++++ --- /var/tmp/diff_new_pack.IT7tZ5/_old 2023-02-13 16:43:00.388113189 +0100 +++ /var/tmp/diff_new_pack.IT7tZ5/_new 2023-02-13 16:43:00.396113236 +0100 @@ -1,7 +1,7 @@ # # spec file for package river # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: river -Version: 0.2.0+g24 +Version: 0.2.4 Release: 0 Summary: A dynamic tiling Wayland compositor License: GPL-3.0-only @@ -27,6 +27,9 @@ BuildRequires: libevdev-devel BuildRequires: libpixman-1-0-devel BuildRequires: pkgconfig +BuildRequires: scdoc >= 1.9.2 +BuildRequires: zig +BuildRequires: zig-rpm-macros BuildRequires: pkgconfig(cairo) BuildRequires: pkgconfig(dbus-1) >= 1.10 BuildRequires: pkgconfig(gdk-pixbuf-2.0) @@ -43,9 +46,6 @@ BuildRequires: pkgconfig(wayland-server) >= 1.20.0 BuildRequires: pkgconfig(wlroots) >= 0.15.0 BuildRequires: pkgconfig(xkbcommon) -BuildRequires: scdoc >= 1.9.2 -BuildRequires: zig -BuildRequires: zig-rpm-macros Recommends: xorg-x11-server-wayland # To make Qt apps work somewhat okay on Wayland and auto use it # Otherwise, it will try to run under XWayland @@ -82,7 +82,7 @@ %package devel Summary: Development files for %{name} -Group: Development/Libraries +Group: Development/Libraries/Other Requires: %{name} BuildArch: noarch ++++++ _service ++++++ --- /var/tmp/diff_new_pack.IT7tZ5/_old 2023-02-13 16:43:00.432113448 +0100 +++ /var/tmp/diff_new_pack.IT7tZ5/_new 2023-02-13 16:43:00.436113472 +0100 @@ -2,8 +2,8 @@ <service name="obs_scm" mode="disabled"> <param name="scm">git</param> <param name="url">https://github.com/riverwm/river.git</param> - <param name="revision">5274383c72aef8c9ecd73d4a82469a3cee29c83d</param> - <param name="versionformat">@PARENT_TAG@+g@TAG_OFFSET@</param> + <param name="revision">394745608f781261678d097f436ad3720c7b59dd</param> + <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="versionrewrite-replacement">\1</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.IT7tZ5/_old 2023-02-13 16:43:00.464113637 +0100 +++ /var/tmp/diff_new_pack.IT7tZ5/_new 2023-02-13 16:43:00.468113660 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/riverwm/river.git</param> - <param name="changesrevision">5274383c72aef8c9ecd73d4a82469a3cee29c83d</param></service></servicedata> + <param name="changesrevision">394745608f781261678d097f436ad3720c7b59dd</param></service></servicedata> (No newline at EOF) ++++++ river-0.2.0+g24.obscpio -> river-0.2.4.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/river-0.2.0+g24/README.md new/river-0.2.4/README.md --- old/river-0.2.0+g24/README.md 2023-01-30 23:48:24.000000000 +0100 +++ new/river-0.2.4/README.md 2023-02-10 17:00:35.000000000 +0100 @@ -3,9 +3,9 @@ River is a dynamic tiling Wayland compositor with flexible runtime configuration. -Join us at [#river](https://web.libera.chat/?channels=#river) -on irc.libera.chat. Read our man pages and our -[wiki](https://github.com/riverwm/river/wiki). +Install from your [package manager](https://repology.org/project/river/versions) â +Join us at [#river](https://web.libera.chat/?channels=#river) on irc.libera.chat â +Read our man pages and [wiki](https://github.com/riverwm/river/wiki) *Note: river is currently early in development. Expect breaking changes and missing features. Bugs should however be rare at @@ -24,10 +24,6 @@ ## Building -<a href="https://repology.org/project/river/versions"> - <img src="https://repology.org/badge/vertical-allrepos/river.svg" alt="Packaging status" align="right"> -</a> - On cloning the repository, you must init and update the submodules as well with e.g. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/river-0.2.0+g24/build.zig new/river-0.2.4/build.zig --- old/river-0.2.0+g24/build.zig 2023-01-30 23:48:24.000000000 +0100 +++ new/river-0.2.4/build.zig 2023-02-10 17:00:35.000000000 +0100 @@ -10,7 +10,7 @@ /// with the "-dev" suffix. /// When a release is tagged, the "-dev" suffix should be removed for the commit that gets tagged. /// Directly after the tagged commit, the version should be bumped and the "-dev" suffix added. -const version = "0.3.0-dev"; +const version = "0.2.4"; pub fn build(b: *zbs.Builder) !void { const target = b.standardTargetOptions(.{}); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/river-0.2.0+g24/deps/zig-wlroots/src/types/output.zig new/river-0.2.4/deps/zig-wlroots/src/types/output.zig --- old/river-0.2.0+g24/deps/zig-wlroots/src/types/output.zig 2023-01-30 23:48:24.000000000 +0100 +++ new/river-0.2.4/deps/zig-wlroots/src/types/output.zig 2023-02-10 17:00:35.000000000 +0100 @@ -1,8 +1,6 @@ const wlr = @import("../wlroots.zig"); -const std = @import("std"); -const mem = std.mem; -const os = std.os; +const os = @import("std").os; const pixman = @import("pixman"); @@ -79,12 +77,6 @@ gamma_lut: ?[*]u16, gamma_lut_size: usize, - pub fn init() State { - var state: State = undefined; - mem.set(u8, mem.asBytes(&state), 0); - return state; - } - extern fn wlr_output_state_set_enabled(state: *State, enabled: bool) void; pub const setEnabled = wlr_output_state_set_enabled; @@ -311,10 +303,10 @@ extern fn wlr_output_rollback(output: *Output) void; pub const rollback = wlr_output_rollback; - extern fn wlr_output_test_state(output: *Output, state: *const Output.State) bool; + extern fn wlr_output_test_state(output: *Output) void; pub const testState = wlr_output_test_state; - extern fn wlr_output_commit_state(output: *Output, state: *const Output.State) bool; + extern fn wlr_output_commit_state(output: *Output) void; pub const commitState = wlr_output_commit_state; extern fn wlr_output_schedule_frame(output: *Output) void; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/river-0.2.0+g24/doc/riverctl.1.scd new/river-0.2.4/doc/riverctl.1.scd --- old/river-0.2.0+g24/doc/riverctl.1.scd 2023-01-30 23:48:24.000000000 +0100 +++ new/river-0.2.4/doc/riverctl.1.scd 2023-02-10 17:00:35.000000000 +0100 @@ -177,7 +177,7 @@ Keys are specified by their XKB keysym name. See _/usr/include/xkbcommon/xkbcommon-keysyms.h_ for the complete list. -Mouse buttons are specified by linux input event code names. The most commonly +Mouse buttons are specified by Linux input event code names. The most commonly used values are: - BTN_LEFT - left mouse button @@ -219,7 +219,7 @@ - _mode_: name of the mode for which to create the mapping - _modifiers_: one or more of the modifiers listed above, separated by a plus sign (+). - - _button_: the name of a linux input event code as described above + - _button_: the name of a Linux input event code as described above - _action_: one of the following values: - move-view - resize-view @@ -254,7 +254,7 @@ - _mode_: name of the mode for which to remove the mapping - _modifiers_: one or more of the modifiers listed above, separated by a plus sign (+). - - _button_: the name of a linux input event code as described above + - _button_: the name of a Linux input event code as described above *unmap-switch* _mode_ *lid*|*tablet* _state_ Remove the switch mapping defined by the arguments: @@ -336,7 +336,7 @@ *keyboard-layout* [-rules _rules_] [-model _model_] [-variant _variant_] \ [-options _options_] _layout_ Set the XKB layout for all keyboards. Defaults from libxkbcommon are used for - everything left unspecified. Note that *layout* may be a comma separated list + everything left unspecified. Note that _layout_ may be a comma separated list of layouts (e.g. "us,de") which may be switched between using various key combinations configured through the options argument (e.g. -options "grp:ctrl_space_toggle"). See *xkeyboard-config*(7) for possible values and @@ -349,7 +349,7 @@ *keyboard-group-destroy* _group_name_ Destroy the keyboard group with the given name. All attached keyboards - will be released, making them act as seperate devices again. + will be released, making them act as separate devices again. *keyboard-group-add* _group_name_ _input_device_name_ Add a keyboard to a keyboard group, identified by the keyboard's @@ -420,7 +420,7 @@ - _button_: Scroll with pointer movement while holding down a button *input* _name_ *scroll-button* _button_ - Set the scroll button of an input device. _button_ is the name of a linux + Set the scroll button of an input device. _button_ is the name of a Linux input event code. # EXAMPLES diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/river-0.2.0+g24/river/Output.zig new/river-0.2.4/river/Output.zig --- old/river-0.2.0+g24/river/Output.zig 2023-01-30 23:48:24.000000000 +0100 +++ new/river-0.2.4/river/Output.zig 2023-02-10 17:00:35.000000000 +0100 @@ -293,6 +293,8 @@ if (target == .unmapped) return; + if (server.lock_manager.state != .unlocked) return; + // Find the topmost layer surface in the top or overlay layers which // requests keyboard interactivity if any. const topmost_surface = outer: for (layers[0..2]) |layer| { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/river-0.2.0+g24/river/Root.zig new/river-0.2.4/river/Root.zig --- old/river-0.2.0+g24/river/Root.zig 2023-01-30 23:48:24.000000000 +0100 +++ new/river-0.2.4/river/Root.zig 2023-02-10 17:00:35.000000000 +0100 @@ -19,7 +19,6 @@ const build_options = @import("build_options"); const std = @import("std"); const assert = std.debug.assert; -const mem = std.mem; const wlr = @import("wlroots"); const wl = @import("wayland").server.wl; @@ -451,30 +450,58 @@ const wlr_output = head.state.output; const output = @intToPtr(*Output, wlr_output.data); - var proposed_state = wlr.Output.State.init(); - head.state.apply(&proposed_state); + if (head.state.enabled) { + wlr_output.enable(true); - switch (action) { - .test_only => { - if (!wlr_output.testState(&proposed_state)) success = false; - }, - .apply => { - if (wlr_output.commitState(&proposed_state)) { - if (head.state.enabled) { + if (head.state.mode) |mode| { + wlr_output.setMode(mode); + } else { + const custom_mode = &head.state.custom_mode; + wlr_output.setCustomMode(custom_mode.width, custom_mode.height, custom_mode.refresh); + } + wlr_output.setScale(head.state.scale); + wlr_output.setTransform(head.state.transform); + wlr_output.enableAdaptiveSync(head.state.adaptive_sync_enabled); + + switch (action) { + .test_only => { + if (!output.wlr_output.testCommit()) success = false; + output.wlr_output.rollback(); + }, + .apply => { + if (output.wlr_output.commit()) { // Just updates the output's position if it is already in the layout self.output_layout.add(output.wlr_output, head.state.x, head.state.y); output.arrangeLayers(.mapped); - } else { + } else |_| { + std.log.scoped(.output_manager).err("failed to apply config to output {s}", .{output.wlr_output.name}); + success = false; + } + }, + } + } else { + // The output is already disabled, so there's nothing to do + if (!wlr_output.enabled) continue; + + wlr_output.enable(false); + + switch (action) { + .test_only => { + if (!output.wlr_output.testCommit()) success = false; + output.wlr_output.rollback(); + }, + .apply => { + if (output.wlr_output.commit()) { self.removeOutput(output); self.output_layout.remove(output.wlr_output); + } else |_| { + std.log.scoped(.output_manager).err("failed to apply config to output {s}", .{ + output.wlr_output.name, + }); + success = false; } - } else { - std.log.scoped(.output_manager).err("failed to apply config to output {s}", .{ - output.wlr_output.name, - }); - success = false; - } - }, + }, + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/river-0.2.0+g24/river/XwaylandOverrideRedirect.zig new/river-0.2.4/river/XwaylandOverrideRedirect.zig --- old/river-0.2.0+g24/river/XwaylandOverrideRedirect.zig 2023-01-30 23:48:24.000000000 +0100 +++ new/river-0.2.4/river/XwaylandOverrideRedirect.zig 2023-02-10 17:00:35.000000000 +0100 @@ -101,6 +101,8 @@ } pub fn focusIfDesired(self: *Self) void { + if (server.lock_manager.state != .unlocked) return; + if (self.xwayland_surface.overrideRedirectWantsFocus() and self.xwayland_surface.icccmInputModel() != .none) { ++++++ river-0.2.0+g24.tar.xz -> river-0.2.4.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/river-0.2.0+g24/README.md new/river-0.2.4/README.md --- old/river-0.2.0+g24/README.md 2023-01-30 23:48:24.000000000 +0100 +++ new/river-0.2.4/README.md 2023-02-10 17:00:35.000000000 +0100 @@ -3,9 +3,9 @@ River is a dynamic tiling Wayland compositor with flexible runtime configuration. -Join us at [#river](https://web.libera.chat/?channels=#river) -on irc.libera.chat. Read our man pages and our -[wiki](https://github.com/riverwm/river/wiki). +Install from your [package manager](https://repology.org/project/river/versions) â +Join us at [#river](https://web.libera.chat/?channels=#river) on irc.libera.chat â +Read our man pages and [wiki](https://github.com/riverwm/river/wiki) *Note: river is currently early in development. Expect breaking changes and missing features. Bugs should however be rare at @@ -24,10 +24,6 @@ ## Building -<a href="https://repology.org/project/river/versions"> - <img src="https://repology.org/badge/vertical-allrepos/river.svg" alt="Packaging status" align="right"> -</a> - On cloning the repository, you must init and update the submodules as well with e.g. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/river-0.2.0+g24/build.zig new/river-0.2.4/build.zig --- old/river-0.2.0+g24/build.zig 2023-01-30 23:48:24.000000000 +0100 +++ new/river-0.2.4/build.zig 2023-02-10 17:00:35.000000000 +0100 @@ -10,7 +10,7 @@ /// with the "-dev" suffix. /// When a release is tagged, the "-dev" suffix should be removed for the commit that gets tagged. /// Directly after the tagged commit, the version should be bumped and the "-dev" suffix added. -const version = "0.3.0-dev"; +const version = "0.2.4"; pub fn build(b: *zbs.Builder) !void { const target = b.standardTargetOptions(.{}); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/river-0.2.0+g24/deps/zig-wlroots/src/types/output.zig new/river-0.2.4/deps/zig-wlroots/src/types/output.zig --- old/river-0.2.0+g24/deps/zig-wlroots/src/types/output.zig 2023-01-30 23:48:24.000000000 +0100 +++ new/river-0.2.4/deps/zig-wlroots/src/types/output.zig 2023-02-10 17:00:35.000000000 +0100 @@ -1,8 +1,6 @@ const wlr = @import("../wlroots.zig"); -const std = @import("std"); -const mem = std.mem; -const os = std.os; +const os = @import("std").os; const pixman = @import("pixman"); @@ -79,12 +77,6 @@ gamma_lut: ?[*]u16, gamma_lut_size: usize, - pub fn init() State { - var state: State = undefined; - mem.set(u8, mem.asBytes(&state), 0); - return state; - } - extern fn wlr_output_state_set_enabled(state: *State, enabled: bool) void; pub const setEnabled = wlr_output_state_set_enabled; @@ -311,10 +303,10 @@ extern fn wlr_output_rollback(output: *Output) void; pub const rollback = wlr_output_rollback; - extern fn wlr_output_test_state(output: *Output, state: *const Output.State) bool; + extern fn wlr_output_test_state(output: *Output) void; pub const testState = wlr_output_test_state; - extern fn wlr_output_commit_state(output: *Output, state: *const Output.State) bool; + extern fn wlr_output_commit_state(output: *Output) void; pub const commitState = wlr_output_commit_state; extern fn wlr_output_schedule_frame(output: *Output) void; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/river-0.2.0+g24/doc/riverctl.1.scd new/river-0.2.4/doc/riverctl.1.scd --- old/river-0.2.0+g24/doc/riverctl.1.scd 2023-01-30 23:48:24.000000000 +0100 +++ new/river-0.2.4/doc/riverctl.1.scd 2023-02-10 17:00:35.000000000 +0100 @@ -177,7 +177,7 @@ Keys are specified by their XKB keysym name. See _/usr/include/xkbcommon/xkbcommon-keysyms.h_ for the complete list. -Mouse buttons are specified by linux input event code names. The most commonly +Mouse buttons are specified by Linux input event code names. The most commonly used values are: - BTN_LEFT - left mouse button @@ -219,7 +219,7 @@ - _mode_: name of the mode for which to create the mapping - _modifiers_: one or more of the modifiers listed above, separated by a plus sign (+). - - _button_: the name of a linux input event code as described above + - _button_: the name of a Linux input event code as described above - _action_: one of the following values: - move-view - resize-view @@ -254,7 +254,7 @@ - _mode_: name of the mode for which to remove the mapping - _modifiers_: one or more of the modifiers listed above, separated by a plus sign (+). - - _button_: the name of a linux input event code as described above + - _button_: the name of a Linux input event code as described above *unmap-switch* _mode_ *lid*|*tablet* _state_ Remove the switch mapping defined by the arguments: @@ -336,7 +336,7 @@ *keyboard-layout* [-rules _rules_] [-model _model_] [-variant _variant_] \ [-options _options_] _layout_ Set the XKB layout for all keyboards. Defaults from libxkbcommon are used for - everything left unspecified. Note that *layout* may be a comma separated list + everything left unspecified. Note that _layout_ may be a comma separated list of layouts (e.g. "us,de") which may be switched between using various key combinations configured through the options argument (e.g. -options "grp:ctrl_space_toggle"). See *xkeyboard-config*(7) for possible values and @@ -349,7 +349,7 @@ *keyboard-group-destroy* _group_name_ Destroy the keyboard group with the given name. All attached keyboards - will be released, making them act as seperate devices again. + will be released, making them act as separate devices again. *keyboard-group-add* _group_name_ _input_device_name_ Add a keyboard to a keyboard group, identified by the keyboard's @@ -420,7 +420,7 @@ - _button_: Scroll with pointer movement while holding down a button *input* _name_ *scroll-button* _button_ - Set the scroll button of an input device. _button_ is the name of a linux + Set the scroll button of an input device. _button_ is the name of a Linux input event code. # EXAMPLES diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/river-0.2.0+g24/river/Output.zig new/river-0.2.4/river/Output.zig --- old/river-0.2.0+g24/river/Output.zig 2023-01-30 23:48:24.000000000 +0100 +++ new/river-0.2.4/river/Output.zig 2023-02-10 17:00:35.000000000 +0100 @@ -293,6 +293,8 @@ if (target == .unmapped) return; + if (server.lock_manager.state != .unlocked) return; + // Find the topmost layer surface in the top or overlay layers which // requests keyboard interactivity if any. const topmost_surface = outer: for (layers[0..2]) |layer| { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/river-0.2.0+g24/river/Root.zig new/river-0.2.4/river/Root.zig --- old/river-0.2.0+g24/river/Root.zig 2023-01-30 23:48:24.000000000 +0100 +++ new/river-0.2.4/river/Root.zig 2023-02-10 17:00:35.000000000 +0100 @@ -19,7 +19,6 @@ const build_options = @import("build_options"); const std = @import("std"); const assert = std.debug.assert; -const mem = std.mem; const wlr = @import("wlroots"); const wl = @import("wayland").server.wl; @@ -451,30 +450,58 @@ const wlr_output = head.state.output; const output = @intToPtr(*Output, wlr_output.data); - var proposed_state = wlr.Output.State.init(); - head.state.apply(&proposed_state); + if (head.state.enabled) { + wlr_output.enable(true); - switch (action) { - .test_only => { - if (!wlr_output.testState(&proposed_state)) success = false; - }, - .apply => { - if (wlr_output.commitState(&proposed_state)) { - if (head.state.enabled) { + if (head.state.mode) |mode| { + wlr_output.setMode(mode); + } else { + const custom_mode = &head.state.custom_mode; + wlr_output.setCustomMode(custom_mode.width, custom_mode.height, custom_mode.refresh); + } + wlr_output.setScale(head.state.scale); + wlr_output.setTransform(head.state.transform); + wlr_output.enableAdaptiveSync(head.state.adaptive_sync_enabled); + + switch (action) { + .test_only => { + if (!output.wlr_output.testCommit()) success = false; + output.wlr_output.rollback(); + }, + .apply => { + if (output.wlr_output.commit()) { // Just updates the output's position if it is already in the layout self.output_layout.add(output.wlr_output, head.state.x, head.state.y); output.arrangeLayers(.mapped); - } else { + } else |_| { + std.log.scoped(.output_manager).err("failed to apply config to output {s}", .{output.wlr_output.name}); + success = false; + } + }, + } + } else { + // The output is already disabled, so there's nothing to do + if (!wlr_output.enabled) continue; + + wlr_output.enable(false); + + switch (action) { + .test_only => { + if (!output.wlr_output.testCommit()) success = false; + output.wlr_output.rollback(); + }, + .apply => { + if (output.wlr_output.commit()) { self.removeOutput(output); self.output_layout.remove(output.wlr_output); + } else |_| { + std.log.scoped(.output_manager).err("failed to apply config to output {s}", .{ + output.wlr_output.name, + }); + success = false; } - } else { - std.log.scoped(.output_manager).err("failed to apply config to output {s}", .{ - output.wlr_output.name, - }); - success = false; - } - }, + }, + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/river-0.2.0+g24/river/XwaylandOverrideRedirect.zig new/river-0.2.4/river/XwaylandOverrideRedirect.zig --- old/river-0.2.0+g24/river/XwaylandOverrideRedirect.zig 2023-01-30 23:48:24.000000000 +0100 +++ new/river-0.2.4/river/XwaylandOverrideRedirect.zig 2023-02-10 17:00:35.000000000 +0100 @@ -101,6 +101,8 @@ } pub fn focusIfDesired(self: *Self) void { + if (server.lock_manager.state != .unlocked) return; + if (self.xwayland_surface.overrideRedirectWantsFocus() and self.xwayland_surface.icccmInputModel() != .none) { ++++++ river.obsinfo ++++++ --- /var/tmp/diff_new_pack.IT7tZ5/_old 2023-02-13 16:43:00.820115734 +0100 +++ /var/tmp/diff_new_pack.IT7tZ5/_new 2023-02-13 16:43:00.824115757 +0100 @@ -1,5 +1,5 @@ name: river -version: 0.2.0+g24 -mtime: 1675118904 -commit: 5274383c72aef8c9ecd73d4a82469a3cee29c83d +version: 0.2.4 +mtime: 1676044835 +commit: 394745608f781261678d097f436ad3720c7b59dd