Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package waywall for openSUSE:Factory checked 
in at 2026-10-20 12:42:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/waywall (Old)
 and      /work/SRC/openSUSE:Factory/.waywall.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "waywall"

Tue Oct 20 12:42:19 2026 rev:3 rq:1386308 version:0.2026.10.12b

Changes:
--------
--- /work/SRC/openSUSE:Factory/waywall/waywall.changes  2026-06-22 
17:28:51.868544163 +0200
+++ /work/SRC/openSUSE:Factory/.waywall.new.3698736/waywall.changes     
2026-10-20 12:42:34.570171408 +0200
@@ -1,0 +2,14 @@
+Sun Oct 18 18:05:11 UTC 2026 - jan gaza <[email protected]>
+
+- Update to version 0.2026.10.12b:
+  * Added support for Minecraft 26.3
+  * Added support for raw input sensitivity multiplier
+  * Added waywall.set_raw_sensitivity to the Lua API
+  * Subprocesses are now killed with SIGTERM instead of SIGKILL
+  * Added logging for XDG_SESSION_DESKTOP
+  * Fixed crashes when using River 0.4 and Jay compositors
+  * Fixed MCSR Launcher instances not being recognized
+  * Fixed a crash when spawned subprocesses exit on NVIDIA systems
+  * Fixed a crash when the same coroutine resumes more than once
+
+-------------------------------------------------------------------

Old:
----
  waywall-0.2026.06.13.tar.gz

New:
----
  waywall-0.2026.10.12b.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ waywall.spec ++++++
--- /var/tmp/diff_new_pack.eOX3Qw/_old  2026-10-20 12:42:35.315202589 +0200
+++ /var/tmp/diff_new_pack.eOX3Qw/_new  2026-10-20 12:42:35.318202714 +0200
@@ -17,7 +17,7 @@
 
 %global __provides_exclude_from ^%{_libdir}/waywall-glfw/.*$
 Name:           waywall
-Version:        0.2026.06.13
+Version:        0.2026.10.12b
 Release:        0
 Summary:        Wayland compositor for Minecraft speedrunning
 License:        GPL-3.0-only AND Zlib

++++++ waywall-0.2026.06.13.tar.gz -> waywall-0.2026.10.12b.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/doc/01_options_input.md 
new/waywall-0.2026.10.12b/doc/01_options_input.md
--- old/waywall-0.2026.06.13/doc/01_options_input.md    2026-06-13 
20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/doc/01_options_input.md   2026-10-12 
05:19:53.000000000 +0200
@@ -24,6 +24,7 @@
 
         -- mouse options
         sensitivity = 1.0,
+        raw_sensitivity = 1.0,
         confine_pointer = false,
     },
 }
@@ -89,14 +90,21 @@
 
 ## Mouse sensitivity
 
-The `sensitivity` option applies a constant multiplier to your mouse motion
-while aiming with the camera ingame. The default value of `1.0` results in
-no change, while `2.0` would make it twice as fast and `0.5` would make it
-half as fast.
+The `sensitivity` and `raw_sensitivity` options apply a constant multiplier
+to your mouse motion while aiming with the camera ingame.
+The default value of `1.0` results in no change, while `2.0` would make it
+twice as fast and `0.5` would make it half as fast.
+
+These options take effect:
+- `sensitivity` - when *Raw Input* is disabled ingame,
+- `raw_sensitivity` - when *Raw Input* is enabled or when playing
+  on new versions (≥ 26.3).
+
+When *Raw Input* is enabled the host compositor's sensitivity is not used.
 
 > [!IMPORTANT]
 > This option only affects your camera movement, *not* your mouse movement in
-> menus. Additionally, it only takes effect **when Raw Input is disabled 
ingame.**
+> menus.
 
 ## Pointer confinement
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/doc/02_helpers_toggle_res.md 
new/waywall-0.2026.10.12b/doc/02_helpers_toggle_res.md
--- old/waywall-0.2026.06.13/doc/02_helpers_toggle_res.md       2026-06-13 
20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/doc/02_helpers_toggle_res.md      2026-10-12 
05:19:53.000000000 +0200
@@ -4,16 +4,17 @@
 provided resolution and no resolution (stretching Minecraft back to the bounds
 of the waywall window).
 
-If a value is provided for the `sens` parameter, toggling to the given
-resolution will set the mouse sensitivity to that value. Toggling away from the
-resolution will set the sensitivity back to the default value specified in the
-[input configuration table].
+If a `number` value is provided for the `sens` and/or `raw_sens` parameters,
+toggling to the given resolution will set the mouse sensitivity to those 
values.
+Toggling away from the resolution will set the sensitivity back to the default
+values specified in the [input configuration table].
 
 ### Arguments
 
   - `width`: number
   - `height`: number
   - `sens`: number (optional)
+  - `raw_sens`: number (optional)
 
 ### Return values
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/doc/02_waywall_exec.md 
new/waywall-0.2026.10.12b/doc/02_waywall_exec.md
--- old/waywall-0.2026.06.13/doc/02_waywall_exec.md     2026-06-13 
20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/doc/02_waywall_exec.md    2026-10-12 
05:19:53.000000000 +0200
@@ -6,7 +6,7 @@
 script.
 
 If the spawned subprocess does not exit before waywall, it will be killed with
-`SIGKILL` when waywall closes.
+`SIGTERM` when waywall closes.
 
 ### Arguments
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/waywall-0.2026.06.13/doc/02_waywall_set_raw_sensitivity.md 
new/waywall-0.2026.10.12b/doc/02_waywall_set_raw_sensitivity.md
--- old/waywall-0.2026.06.13/doc/02_waywall_set_raw_sensitivity.md      
1970-01-01 01:00:00.000000000 +0100
+++ new/waywall-0.2026.10.12b/doc/02_waywall_set_raw_sensitivity.md     
2026-10-12 05:19:53.000000000 +0200
@@ -0,0 +1,18 @@
+# set_raw_sensitivity
+
+This function changes the mouse sensitivity multiplier which is used for
+camera movement when using raw input (unaccelerated by the host compositor).
+If the provided sensitivity is 0, the sensitivity will instead be reset
+to whatever value you have specified in the [input configuration table].
+
+### Arguments
+
+  - `sensitivity`: number
+
+### Return values
+
+None
+
+> This function cannot be called during startup.
+
+[input configuration table]: 01_options_input.md
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/doc/SUMMARY.md 
new/waywall-0.2026.10.12b/doc/SUMMARY.md
--- old/waywall-0.2026.06.13/doc/SUMMARY.md     2026-06-13 20:02:32.000000000 
+0200
+++ new/waywall-0.2026.10.12b/doc/SUMMARY.md    2026-10-12 05:19:53.000000000 
+0200
@@ -34,6 +34,7 @@
     - [press_key](02_waywall_press_key.md)
     - [profile](02_waywall_profile.md)
     - [set_keymap](02_waywall_set_keymap.md)
+    - [set_raw_sensitivity](02_waywall_set_raw_sensitivity.md)
     - [set_remaps](02_waywall_set_remaps.md)
     - [set_resolution](02_waywall_set_resolution.md)
     - [set_sensitivity](02_waywall_set_sensitivity.md)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/include/config/config.h 
new/waywall-0.2026.10.12b/include/config/config.h
--- old/waywall-0.2026.06.13/include/config/config.h    2026-06-13 
20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/include/config/config.h   2026-10-12 
05:19:53.000000000 +0200
@@ -38,6 +38,7 @@
 
         int repeat_rate, repeat_delay;
         double sens;
+        double raw_sens;
         bool confine;
     } input;
     struct {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/include/server/server.h 
new/waywall-0.2026.10.12b/include/server/server.h
--- old/waywall-0.2026.06.13/include/server/server.h    2026-06-13 
20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/include/server/server.h   2026-10-12 
05:19:53.000000000 +0200
@@ -49,6 +49,7 @@
 
     bool confine;
     double sens;
+    double raw_sens;
 
     bool applied;
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/include/server/ui.h 
new/waywall-0.2026.10.12b/include/server/ui.h
--- old/waywall-0.2026.06.13/include/server/ui.h        2026-06-13 
20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/include/server/ui.h       2026-10-12 
05:19:53.000000000 +0200
@@ -33,7 +33,7 @@
     int32_t width, height;
     int32_t render_width, render_height;
     int32_t fullscreen_width, fullscreen_height;
-    bool mapped, resize, fullscreen;
+    bool mapped, configured, resize, fullscreen;
 
     struct wl_list views; // server_view.link
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/waywall-0.2026.06.13/include/server/wp_relative_pointer.h 
new/waywall-0.2026.10.12b/include/server/wp_relative_pointer.h
--- old/waywall-0.2026.06.13/include/server/wp_relative_pointer.h       
2026-06-13 20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/include/server/wp_relative_pointer.h      
2026-10-12 05:19:53.000000000 +0200
@@ -10,6 +10,7 @@
 
     struct {
         double sens;
+        double raw_sens;
     } config;
 
     struct server *server;
@@ -31,3 +32,6 @@
                                                                struct config 
*cfg);
 void server_relative_pointer_set_sens(struct server_relative_pointer 
*relative_pointer,
                                       double sens);
+
+void server_relative_pointer_set_raw_sens(struct server_relative_pointer 
*relative_pointer,
+                                          double sens);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/waywall/config/api.c 
new/waywall-0.2026.10.12b/waywall/config/api.c
--- old/waywall-0.2026.06.13/waywall/config/api.c       2026-06-13 
20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/waywall/config/api.c      2026-10-12 
05:19:53.000000000 +0200
@@ -828,6 +828,32 @@
 }
 
 static int
+l_set_raw_sensitivity(lua_State *L) {
+    static constexpr int ARG_SENS = 1;
+
+    // Prologue
+    struct config_vm *vm = config_vm_from(L);
+    struct wrap *wrap = config_vm_get_wrap(vm);
+    if (!wrap) {
+        return luaL_error(L, STARTUP_ERRMSG("set_raw_sensitivity"));
+    }
+
+    double sens = luaL_checknumber(L, ARG_SENS);
+    luaL_argcheck(L, sens >= 0, ARG_SENS, "sensitivity must be a positive 
number");
+
+    lua_settop(L, ARG_SENS);
+
+    // Body
+    if (sens == 0) {
+        sens = wrap->cfg->input.raw_sens;
+    }
+    server_relative_pointer_set_raw_sens(wrap->server->relative_pointer, sens);
+
+    // Epilogue
+    return 0;
+}
+
+static int
 l_show_floating(lua_State *L) {
     static constexpr int ARG_SHOW = 1;
 
@@ -1264,6 +1290,7 @@
     {"set_remaps", l_set_remaps},
     {"set_resolution", l_set_resolution},
     {"set_sensitivity", l_set_sensitivity},
+    {"set_raw_sensitivity", l_set_raw_sensitivity},
     {"show_floating", l_show_floating},
     {"sleep", l_sleep},
     {"state", l_state},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/waywall/config/config.c 
new/waywall-0.2026.10.12b/waywall/config/config.c
--- old/waywall-0.2026.06.13/waywall/config/config.c    2026-06-13 
20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/waywall/config/config.c   2026-10-12 
05:19:53.000000000 +0200
@@ -47,6 +47,7 @@
             .repeat_rate = -1,
             .repeat_delay = -1,
             .sens = 1.0,
+            .raw_sens = 1.0,
             .confine = false,
         },
     .theme =
@@ -650,6 +651,14 @@
         return 1;
     }
 
+    if (get_double(cfg, "raw_sensitivity", &cfg->input.raw_sens, 
"input.raw_sensitivity", false) != 0) {
+        return 1;
+    }
+    if (cfg->input.raw_sens <= 0) {
+        ww_log(LOG_ERROR, "'input.raw_sensitivity' must be a positive, 
non-zero number");
+        return 1;
+    }
+
     if (get_bool(cfg, "confine_pointer", &cfg->input.confine, 
"input.confine_pointer", false) !=
         0) {
         return 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/waywall/config/vm.c 
new/waywall-0.2026.10.12b/waywall/config/vm.c
--- old/waywall-0.2026.06.13/waywall/config/vm.c        2026-06-13 
20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/waywall/config/vm.c       2026-10-12 
05:19:53.000000000 +0200
@@ -85,7 +85,9 @@
 
 static void
 waker_destroy(struct config_vm_waker *waker) {
-    config_vm_coro_del(waker->L);
+    if (waker->L) {
+        config_vm_coro_del(waker->L);
+    }
     waker->destroy(waker, waker->data);
 
     wl_list_remove(&waker->link);
@@ -316,7 +318,13 @@
     switch (ret) {
     case LUA_YIELD:
         process_yield(waker->L);
+
+        // Either a valid new waker was associated with the coroutine, in 
which case we do *not*
+        // want the coroutine to be deleted from the coroutines table, or no 
new valid waker was
+        // associated, in which case the coroutine was already deleted by 
process_yield.
+        waker->L = nullptr;
         waker_destroy(waker);
+
         return;
     case 0:
         // The coroutine returned a value and cannot be resumed again. Remove 
it from the list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/waywall/instance.c 
new/waywall-0.2026.10.12b/waywall/instance.c
--- old/waywall-0.2026.06.13/waywall/instance.c 2026-06-13 20:02:32.000000000 
+0200
+++ new/waywall-0.2026.10.12b/waywall/instance.c        2026-10-12 
05:19:53.000000000 +0200
@@ -45,7 +45,6 @@
         "logs",
         "resourcepacks",
         "saves",
-        "screenshots",
     };
 
     DIR *dir = opendir(dirname);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/waywall/lua/api.lua 
new/waywall-0.2026.10.12b/waywall/lua/api.lua
--- old/waywall-0.2026.06.13/waywall/lua/api.lua        2026-06-13 
20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/waywall/lua/api.lua       2026-10-12 
05:19:53.000000000 +0200
@@ -111,6 +111,10 @@
 -- are valid keys.)
 M.set_keymap = priv.set_keymap
 
+--- Sets the raw input sensitivity multiplier for relative pointer motion.
+-- @param sensitivity The multiplier to use. A value of zero resets 
sensitivity.
+M.set_raw_sensitivity = priv.set_raw_sensitivity
+
 --- Sets the input remapping map, corresponding to config.input.remaps.
 -- @param remaps A table containing the remapping map, with the same format as
 -- config.input.remaps.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/waywall/lua/helpers.lua 
new/waywall-0.2026.10.12b/waywall/lua/helpers.lua
--- old/waywall-0.2026.06.13/waywall/lua/helpers.lua    2026-06-13 
20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/waywall/lua/helpers.lua   2026-10-12 
05:19:53.000000000 +0200
@@ -99,13 +99,15 @@
 -- @param width The width to set the Minecraft window to.
 -- @param height The height to set the Minecraft window to.
 -- @param sens The sensitivity to use when toggling resolution, if any.
+-- @param raw_sens The raw_sensitivity to use when toggling resolution, if any.
 -- @return toggle_res A function which can be used to switch resolutions.
-M.toggle_res = function(width, height, sens)
+M.toggle_res = function(width, height, sens, raw_sens)
     return function()
         local act_width, act_height = waywall.active_res()
         if act_width == width and act_height == height then
             waywall.set_resolution(0, 0)
             waywall.set_sensitivity(0)
+            waywall.set_raw_sensitivity(0)
         else
             waywall.set_resolution(width, height)
             if type(sens) == "number" then
@@ -113,6 +115,11 @@
             else
                 waywall.set_sensitivity(0)
             end
+            if type(raw_sens) == "number" then
+                waywall.set_raw_sensitivity(raw_sens)
+            else
+                waywall.set_raw_sensitivity(0)
+            end
         end
 
         return true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/waywall/main.c 
new/waywall-0.2026.10.12b/waywall/main.c
--- old/waywall-0.2026.06.13/waywall/main.c     2026-06-13 20:02:32.000000000 
+0200
+++ new/waywall-0.2026.10.12b/waywall/main.c    2026-10-12 05:19:53.000000000 
+0200
@@ -145,7 +145,7 @@
         }
 
         ww_log_errno(LOG_ERROR, "failed to exec '%s' in child process", 
argv[0]);
-        exit(EXIT_FAILURE);
+        _exit(EXIT_FAILURE);
     } else if (ww.child == -1) {
         // Parent process (error)
         ww_log_errno(LOG_ERROR, "failed to fork child process");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/waywall/scene.c 
new/waywall-0.2026.10.12b/waywall/scene.c
--- old/waywall-0.2026.06.13/waywall/scene.c    2026-06-13 20:02:32.000000000 
+0200
+++ new/waywall-0.2026.10.12b/waywall/scene.c   2026-10-12 05:19:53.000000000 
+0200
@@ -522,11 +522,9 @@
     glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
 
     struct scene_object *object;
-    struct wl_list *positive_depth = nullptr;
     glEnable(GL_STENCIL_TEST);
     wl_list_for_each (object, &scene->objects.sorted, link) {
         if (object->depth >= 0) {
-            positive_depth = object->link.prev;
             break;
         }
 
@@ -543,8 +541,8 @@
     wl_list_for_each (object, &scene->objects.unsorted_text, link) {
         text_render(object);
     }
-    if (positive_depth) {
-        wl_list_for_each (object, positive_depth, link) {
+    wl_list_for_each (object, &scene->objects.sorted, link) {
+        if (object->depth >= 0) {
             object_render(object);
         }
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/waywall/server/server.c 
new/waywall-0.2026.10.12b/waywall/server/server.c
--- old/waywall-0.2026.06.13/waywall/server/server.c    2026-06-13 
20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/waywall/server/server.c   2026-10-12 
05:19:53.000000000 +0200
@@ -315,6 +315,7 @@
     server_ui_use_config(server->ui, config->ui);
 
     server->relative_pointer->config.sens = config->sens;
+    server->relative_pointer->config.raw_sens = config->raw_sens;
     server_pointer_constraints_set_confine(server->pointer_constraints, 
config->confine);
 
     config->applied = true;
@@ -326,6 +327,7 @@
 
     config->confine = cfg->input.confine;
     config->sens = cfg->input.sens;
+    config->raw_sens = cfg->input.raw_sens;
 
     config->cursor = server_cursor_config_create(server->cursor, cfg);
     if (!config->cursor) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/waywall/server/ui.c 
new/waywall-0.2026.10.12b/waywall/server/ui.c
--- old/waywall-0.2026.06.13/waywall/server/ui.c        2026-06-13 
20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/waywall/server/ui.c       2026-10-12 
05:19:53.000000000 +0200
@@ -19,6 +19,7 @@
 #include <linux/memfd.h>
 #include <stdlib.h>
 #include <sys/mman.h>
+#include <time.h>
 #include <unistd.h>
 #include <wayland-client-core.h>
 #include <wayland-client-protocol.h>
@@ -293,6 +294,14 @@
 
     xdg_surface_ack_configure(xdg_surface, serial);
 
+    // The initial configure sequence for an xdg_surface may or may not 
include an
+    // xdg_toplevel.configure event with nonzero dimensions (e.g. Jay sends an 
empty initial
+    // configure, whereas river's separate window manager can take a while to 
send toplevel
+    // state). Track receipt of the initial configure separately from `resize` 
and `mapped`:
+    // `mapped` specifically means "a buffer is attached," which is only set 
once
+    // server_ui_show() has actually attached one.
+    ui->configured = true;
+
     if (ui->resize) {
         wl_signal_emit_mutable(&ui->events.resize, nullptr);
         ui->resize = false;
@@ -484,9 +493,16 @@
     wl_surface_commit(ui->root.surface);
     wl_display_roundtrip(display);
 
+    // HACK: We need to wait until the toplevel has received a configure event 
to be able to attach
+    // a buffer, but on some compositors (e.g. newer, non-monolithic versions 
of river) it may take
+    // the compositor some time to send a configure event.
+    while (!ui->configured) {
+        wl_display_roundtrip(display);
+        nanosleep(&(struct timespec){.tv_nsec = 10'000'000}, nullptr);
+    }
+
     wl_surface_attach(ui->root.surface, ui->config->background, 0, 0);
     wl_surface_commit(ui->root.surface);
-    wl_display_roundtrip(display);
 
     ui->mapped = true;
     wl_signal_emit_mutable(&ui->server->events.map_status, &ui->mapped);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/waywall-0.2026.06.13/waywall/server/wp_relative_pointer.c 
new/waywall-0.2026.10.12b/waywall/server/wp_relative_pointer.c
--- old/waywall-0.2026.06.13/waywall/server/wp_relative_pointer.c       
2026-06-13 20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/waywall/server/wp_relative_pointer.c      
2026-10-12 05:19:53.000000000 +0200
@@ -35,8 +35,8 @@
     double y = trunc(relative_pointer->acc_y);
     relative_pointer->acc_y -= y;
 
-    relative_pointer->acc_x_unaccel += wl_fixed_to_double(dx_unaccel);
-    relative_pointer->acc_y_unaccel += wl_fixed_to_double(dy_unaccel);
+    relative_pointer->acc_x_unaccel += wl_fixed_to_double(dx_unaccel) * 
relative_pointer->config.raw_sens;
+    relative_pointer->acc_y_unaccel += wl_fixed_to_double(dy_unaccel) * 
relative_pointer->config.raw_sens;
 
     double x_unaccel = trunc(relative_pointer->acc_x_unaccel);
     relative_pointer->acc_x_unaccel -= x_unaccel;
@@ -197,6 +197,7 @@
     wl_display_add_destroy_listener(server->display, 
&relative_pointer->on_display_destroy);
 
     relative_pointer->config.sens = cfg->input.sens;
+    relative_pointer->config.raw_sens = cfg->input.raw_sens;
     return relative_pointer;
 }
 
@@ -204,3 +205,8 @@
 server_relative_pointer_set_sens(struct server_relative_pointer 
*relative_pointer, double sens) {
     relative_pointer->config.sens = sens;
 }
+
+void
+server_relative_pointer_set_raw_sens(struct server_relative_pointer 
*relative_pointer, double sens) {
+    relative_pointer->config.raw_sens = sens;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/waywall/server/xdg_shell.c 
new/waywall-0.2026.10.12b/waywall/server/xdg_shell.c
--- old/waywall-0.2026.06.13/waywall/server/xdg_shell.c 2026-06-13 
20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/waywall/server/xdg_shell.c        2026-10-12 
05:19:53.000000000 +0200
@@ -245,8 +245,11 @@
 static void
 xdg_toplevel_set_parent(struct wl_client *client, struct wl_resource *resource,
                         struct wl_resource *toplevel_resource) {
-    // Unused.
-    wl_client_post_implementation_error(client, "xdg_toplevel.set_parent is 
not supported");
+    // SDL sends xdg_toplevel::set_parent(null) on startup,
+    // which is a no-op if no parent is already set.
+    if (toplevel_resource != nullptr) {
+        wl_client_post_implementation_error(client, "xdg_toplevel.set_parent 
is not supported");
+    }
 }
 
 static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/waywall/server/xserver.c 
new/waywall-0.2026.10.12b/waywall/server/xserver.c
--- old/waywall-0.2026.06.13/waywall/server/xserver.c   2026-06-13 
20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/waywall/server/xserver.c  2026-10-12 
05:19:53.000000000 +0200
@@ -453,7 +453,7 @@
     if (srv->pid == 0) {
         // Child process
         xserver_exec(srv, notify_fd[1], log_fd);
-        exit(EXIT_FAILURE);
+        _exit(EXIT_FAILURE);
     } else if (srv->pid == -1) {
         // Parent process (error)
         ww_log_errno(LOG_ERROR, "failed to fork xwayland");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/waywall/subproc.c 
new/waywall-0.2026.10.12b/waywall/subproc.c
--- old/waywall-0.2026.06.13/waywall/subproc.c  2026-06-13 20:02:32.000000000 
+0200
+++ new/waywall-0.2026.10.12b/waywall/subproc.c 2026-10-12 05:19:53.000000000 
+0200
@@ -64,7 +64,7 @@
     for (ssize_t i = 0; i < subproc->entries.len; i++) {
         struct subproc_entry *entry = &subproc->entries.data[i];
 
-        if (pidfd_send_signal(entry->pidfd, SIGKILL, nullptr, 0) != 0) {
+        if (pidfd_send_signal(entry->pidfd, SIGTERM, nullptr, 0) != 0) {
             if (errno != ESRCH) {
                 ww_log_errno(LOG_ERROR, "failed to kill child process %jd", 
(intmax_t)entry->pid);
             }
@@ -88,11 +88,11 @@
         int out = open("/dev/null", O_WRONLY);
         if (out == -1) {
             ww_log_errno(LOG_ERROR, "failed to open /dev/null in child 
process");
-            exit(EXIT_FAILURE);
+            _exit(EXIT_FAILURE);
         }
         if (dup2(out, STDOUT_FILENO) == -1) {
             ww_log_errno(LOG_ERROR, "failed to duplicate /dev/null to stdout 
in child process");
-            exit(EXIT_FAILURE);
+            _exit(EXIT_FAILURE);
         }
 
         char **arg_list = zalloc(cmd.len + 1, sizeof(*arg_list));
@@ -101,8 +101,8 @@
         }
 
         execvp(arg_list[0], arg_list);
-        ww_log_errno(LOG_ERROR, "failed to execvp() in child porcess");
-        exit(EXIT_FAILURE);
+        ww_log_errno(LOG_ERROR, "failed to execvp() in child process");
+        _exit(EXIT_FAILURE);
     } else if (pid == -1) {
         // Parent process (error)
         ww_log_errno(LOG_ERROR, "failed to fork() child process");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/waywall/util/sysinfo.c 
new/waywall-0.2026.10.12b/waywall/util/sysinfo.c
--- old/waywall-0.2026.06.13/waywall/util/sysinfo.c     2026-06-13 
20:02:32.000000000 +0200
+++ new/waywall-0.2026.10.12b/waywall/util/sysinfo.c    2026-10-12 
05:19:53.000000000 +0200
@@ -85,6 +85,13 @@
     ww_log(LOG_INFO, "libwayland version: %s", WAYLAND_VERSION);
 }
 
+static void
+log_host_compositor() {
+    const char *xdg_session_desktop = getenv("XDG_SESSION_DESKTOP");
+
+    ww_log(LOG_INFO, "XDG_SESSION_DESKTOP: %s", xdg_session_desktop ? 
xdg_session_desktop : "undefined");
+}
+
 void
 sysinfo_dump_log() {
     ww_log(LOG_INFO, "---- SYSTEM INFO");
@@ -93,6 +100,7 @@
     log_max_files();
     log_inotify_limits();
     log_wl_version();
+    log_host_compositor();
 
     ww_log(LOG_INFO, "---- END SYSTEM INFO");
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/waywall-0.2026.06.13/waywall/wrap.c 
new/waywall-0.2026.10.12b/waywall/wrap.c
--- old/waywall-0.2026.06.13/waywall/wrap.c     2026-06-13 20:02:32.000000000 
+0200
+++ new/waywall-0.2026.10.12b/waywall/wrap.c    2026-10-12 05:19:53.000000000 
+0200
@@ -370,7 +370,6 @@
         }
     }
 
-    wrap->view = view;
     wrap->instance = instance_create(view, wrap->inotify);
     if (wrap->instance) {
         strbuf path = instance_get_state_path(wrap->instance);
@@ -390,10 +389,10 @@
     // xdg_surface role commit event, so the pending buffer will not have been 
put into the
     // current state yet. I would like to have a better API for this (perhaps 
change when the
     // event fires?), but this works for now.
-    ww_assert(wrap->view->surface->pending.buffer);
+    ww_assert(view->surface->pending.buffer);
 
     int32_t width, height;
-    server_buffer_get_size(wrap->view->surface->pending.buffer, &width, 
&height);
+    server_buffer_get_size(view->surface->pending.buffer, &width, &height);
 
     wrap->server->ui->width = width;
     wrap->server->ui->height = height;
@@ -402,7 +401,7 @@
     server_ui_show(wrap->server->ui);
 
     ww_assert(wrap->width > 0 && wrap->height > 0);
-    ww_assert(wrap->view);
+    wrap->view = view;
 
     server_view_set_size(wrap->view, wrap->width, wrap->height);
     server_view_set_centered(wrap->view, true);

Reply via email to