Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package swaylock for openSUSE:Factory 
checked in at 2026-03-11 20:54:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/swaylock (Old)
 and      /work/SRC/openSUSE:Factory/.swaylock.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "swaylock"

Wed Mar 11 20:54:46 2026 rev:15 rq:1338188 version:1.8.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/swaylock/swaylock.changes        2025-11-09 
21:08:55.081695343 +0100
+++ /work/SRC/openSUSE:Factory/.swaylock.new.8177/swaylock.changes      
2026-03-11 20:56:23.096559392 +0100
@@ -1,0 +2,10 @@
+Wed Mar 11 05:17:44 UTC 2026 - Michael Vetter <[email protected]>
+
+- Update to 1.8.5:
+  * seat: don't abort on wl_keyboard.keymap_format.no_keymap
+  * Use bright black rather than black for LOG_DEBUG
+  * Add short example of config file to man page
+  * Always set wl_buffer scale
+  * pam: only send the password once per conversation
+
+-------------------------------------------------------------------

Old:
----
  swaylock-1.8.4.obscpio

New:
----
  swaylock-1.8.5.obscpio

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

Other differences:
------------------
++++++ swaylock.spec ++++++
--- /var/tmp/diff_new_pack.bazeIP/_old  2026-03-11 20:56:23.840590088 +0100
+++ /var/tmp/diff_new_pack.bazeIP/_new  2026-03-11 20:56:23.840590088 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package swaylock
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # 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:           swaylock
-Version:        1.8.4
+Version:        1.8.5
 Release:        0
 Summary:        Screen locker for Wayland
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.bazeIP/_old  2026-03-11 20:56:23.884591903 +0100
+++ /var/tmp/diff_new_pack.bazeIP/_new  2026-03-11 20:56:23.892592233 +0100
@@ -2,7 +2,7 @@
   <service name="obs_scm" mode="manual">
     <param name="scm">git</param>
     <param name="url">https://github.com/swaywm/swaylock.git</param>
-    <param name="revision">v1.8.4</param>
+    <param name="revision">v1.8.5</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">disable</param>

++++++ swaylock-1.8.4.obscpio -> swaylock-1.8.5.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/swaylock-1.8.4/log.c new/swaylock-1.8.5/log.c
--- old/swaylock-1.8.4/log.c    2025-11-06 10:06:57.000000000 +0100
+++ new/swaylock-1.8.5/log.c    2026-03-09 18:00:43.000000000 +0100
@@ -13,7 +13,7 @@
        [LOG_SILENT] = "",
        [LOG_ERROR ] = "\x1B[1;31m",
        [LOG_INFO  ] = "\x1B[1;34m",
-       [LOG_DEBUG ] = "\x1B[1;30m",
+       [LOG_DEBUG ] = "\x1B[1;90m",
 };
 
 void swaylock_log_init(enum log_importance verbosity) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/swaylock-1.8.4/meson.build 
new/swaylock-1.8.5/meson.build
--- old/swaylock-1.8.4/meson.build      2025-11-06 10:06:57.000000000 +0100
+++ new/swaylock-1.8.5/meson.build      2026-03-09 18:00:43.000000000 +0100
@@ -1,7 +1,7 @@
 project(
        'swaylock',
        'c',
-       version: '1.8.4',
+       version: '1.8.5',
        license: 'MIT',
        meson_version: '>=0.59.0',
        default_options: [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/swaylock-1.8.4/pam.c new/swaylock-1.8.5/pam.c
--- old/swaylock-1.8.4/pam.c    2025-11-06 10:06:57.000000000 +0100
+++ new/swaylock-1.8.5/pam.c    2026-03-09 18:00:43.000000000 +0100
@@ -10,8 +10,6 @@
 #include "password-buffer.h"
 #include "swaylock.h"
 
-static char *pw_buf = NULL;
-
 void initialize_pw_backend(int argc, char **argv) {
        if (getuid() != geteuid() || getgid() != getegid()) {
                swaylock_log(LOG_ERROR,
@@ -24,8 +22,14 @@
        }
 }
 
+struct conv_state {
+       char *password;
+};
+
 static int handle_conversation(int num_msg, const struct pam_message **msg,
                struct pam_response **resp, void *data) {
+       struct conv_state *state = data;
+
        /* PAM expects an array of responses, one for each message */
        struct pam_response *pam_reply =
                calloc(num_msg, sizeof(struct pam_response));
@@ -38,11 +42,18 @@
                switch (msg[i]->msg_style) {
                case PAM_PROMPT_ECHO_OFF:
                case PAM_PROMPT_ECHO_ON:
-                       pam_reply[i].resp = strdup(pw_buf); // PAM clears and 
frees this
+                       /* workaround pam_systemd_home internal retries:
+                        * 
https://github.com/systemd/systemd/blob/main/src/home/pam_systemd_home.c#L594-L599
+                        * if the password has already been rejected once, 
abort the conversation */
+                       if (state->password == NULL) {
+                               return PAM_ABORT;
+                       }
+                       pam_reply[i].resp = strdup(state->password); // PAM 
clears and frees this
                        if (pam_reply[i].resp == NULL) {
                                swaylock_log(LOG_ERROR, "Allocation failed");
                                return PAM_ABORT;
                        }
+                       state->password = NULL;
                        break;
                case PAM_ERROR_MSG:
                case PAM_TEXT_INFO:
@@ -71,6 +82,7 @@
 }
 
 void run_pw_backend_child(void) {
+       char *pw_buf = NULL;
        struct passwd *passwd = getpwuid(getuid());
        if (!passwd) {
                swaylock_log_errno(LOG_ERROR, "getpwuid failed");
@@ -79,9 +91,10 @@
 
        char *username = passwd->pw_name;
 
+       struct conv_state state = {0};
        const struct pam_conv conv = {
                .conv = handle_conversation,
-               .appdata_ptr = NULL,
+               .appdata_ptr = &state,
        };
        pam_handle_t *auth_handle = NULL;
        if (pam_start("swaylock", username, &conv, &auth_handle) != 
PAM_SUCCESS) {
@@ -101,9 +114,11 @@
                        break;
                }
 
+               state.password = pw_buf;
                int pam_status = pam_authenticate(auth_handle, 0);
                password_buffer_destroy(pw_buf, size);
                pw_buf = NULL;
+               state.password = NULL;
 
                bool success = pam_status == PAM_SUCCESS;
                if (!success) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/swaylock-1.8.4/render.c new/swaylock-1.8.5/render.c
--- old/swaylock-1.8.4/render.c 2025-11-06 10:06:57.000000000 +0100
+++ new/swaylock-1.8.5/render.c 2026-03-09 18:00:43.000000000 +0100
@@ -91,7 +91,6 @@
                cairo_restore(cairo);
                cairo_identity_matrix(cairo);
 
-               wl_surface_set_buffer_scale(surface->surface, surface->scale);
                wl_surface_attach(surface->surface, buffer.buffer, 0, 0);
                wl_surface_damage_buffer(surface->surface, 0, 0, INT32_MAX, 
INT32_MAX);
                need_destroy = true;
@@ -100,6 +99,9 @@
                surface->last_buffer_height = buffer_height;
        }
 
+       // It is possible for the surface scale to change even if the wl_buffer 
size hasn't
+       wl_surface_set_buffer_scale(surface->surface, surface->scale);
+
        render_frame(surface);
        surface->dirty = false;
        surface->frame = wl_surface_frame(surface->surface);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/swaylock-1.8.4/seat.c new/swaylock-1.8.5/seat.c
--- old/swaylock-1.8.4/seat.c   2025-11-06 10:06:57.000000000 +0100
+++ new/swaylock-1.8.5/seat.c   2026-03-09 18:00:43.000000000 +0100
@@ -12,25 +12,33 @@
                uint32_t format, int32_t fd, uint32_t size) {
        struct swaylock_seat *seat = data;
        struct swaylock_state *state = seat->state;
-       if (format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1) {
-               close(fd);
-               swaylock_log(LOG_ERROR, "Unknown keymap format %d, aborting", 
format);
-               exit(1);
-       }
-       char *map_shm = mmap(NULL, size - 1, PROT_READ, MAP_PRIVATE, fd, 0);
-       if (map_shm == MAP_FAILED) {
-               close(fd);
-               swaylock_log(LOG_ERROR, "Unable to initialize keymap shm, 
aborting");
-               exit(1);
-       }
-       struct xkb_keymap *keymap = xkb_keymap_new_from_buffer(
+
+       struct xkb_keymap *keymap = NULL;
+       struct xkb_state *xkb_state = NULL;
+
+       switch (format) {
+       case WL_KEYBOARD_KEYMAP_FORMAT_NO_KEYMAP:
+               break;
+       case WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1:;
+               char *map_shm = mmap(NULL, size - 1, PROT_READ, MAP_PRIVATE, 
fd, 0);
+               if (map_shm == MAP_FAILED) {
+                       close(fd);
+                       swaylock_log(LOG_ERROR, "Unable to initialize keymap 
shm, aborting");
+                       exit(1);
+               }
+               keymap = xkb_keymap_new_from_buffer(
                        state->xkb.context, map_shm, size - 1, 
XKB_KEYMAP_FORMAT_TEXT_V1,
                        XKB_KEYMAP_COMPILE_NO_FLAGS);
-       munmap(map_shm, size - 1);
+               assert(keymap);
+               munmap(map_shm, size - 1);
+
+               xkb_state = xkb_state_new(keymap);
+               assert(xkb_state);
+               break;
+       }
+
        close(fd);
-       assert(keymap);
-       struct xkb_state *xkb_state = xkb_state_new(keymap);
-       assert(xkb_state);
+
        xkb_keymap_unref(state->xkb.keymap);
        xkb_state_unref(state->xkb.state);
        state->xkb.keymap = keymap;
@@ -59,6 +67,10 @@
                uint32_t serial, uint32_t time, uint32_t key, uint32_t 
_key_state) {
        struct swaylock_seat *seat = data;
        struct swaylock_state *state = seat->state;
+       if (state->xkb.state == NULL) {
+               return;
+       }
+
        enum wl_keyboard_key_state key_state = _key_state;
        xkb_keysym_t sym = xkb_state_key_get_one_sym(state->xkb.state, key + 8);
        uint32_t keycode = key_state == WL_KEYBOARD_KEY_STATE_PRESSED ?
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/swaylock-1.8.4/swaylock.1.scd 
new/swaylock-1.8.5/swaylock.1.scd
--- old/swaylock-1.8.4/swaylock.1.scd   2025-11-06 10:06:57.000000000 +0100
+++ new/swaylock-1.8.5/swaylock.1.scd   2026-03-09 18:00:43.000000000 +0100
@@ -19,7 +19,14 @@
        options in the configuration file using the format _long-option=value_.
        For options such as _ignore-empty-password_, just supply the 
_long-option_.
        All leading dashes should be omitted and the equals sign is required for
-       flags that take an argument.
+       flags that take an argument. For example:
+
+       ```
+       image=/usr/share/backgrounds/sway/Sway_Wallpaper_Blue_768x1024.png
+       scaling=center
+       show-failed-attempts
+       ring-color=#ff00ff
+       ```
 
 *-d, --debug*
        Enable debugging output.

++++++ swaylock.obsinfo ++++++
--- /var/tmp/diff_new_pack.bazeIP/_old  2026-03-11 20:56:24.096600650 +0100
+++ /var/tmp/diff_new_pack.bazeIP/_new  2026-03-11 20:56:24.104600980 +0100
@@ -1,5 +1,5 @@
 name: swaylock
-version: 1.8.4
-mtime: 1762420017
-commit: ed43580a1907ac86b5befb289fe5de03578a62e3
+version: 1.8.5
+mtime: 1773075643
+commit: 1a4c472c11ee0354e5a689e33fad4ecce533ddc3
 

Reply via email to