Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package xdg-desktop-portal-wlr for 
openSUSE:Factory checked in at 2026-10-29 22:33:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xdg-desktop-portal-wlr (Old)
 and      /work/SRC/openSUSE:Factory/.xdg-desktop-portal-wlr.new.1255 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xdg-desktop-portal-wlr"

Thu Oct 29 22:33:20 2026 rev:15 rq:1393728 version:0.8.5

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/xdg-desktop-portal-wlr/xdg-desktop-portal-wlr.changes
    2026-07-28 21:23:30.317935729 +0200
+++ 
/work/SRC/openSUSE:Factory/.xdg-desktop-portal-wlr.new.1255/xdg-desktop-portal-wlr.changes
  2026-10-29 22:33:22.486404231 +0100
@@ -1,0 +2,7 @@
+Thu Oct 29 20:14:31 UTC 2026 - Arnav Singh <[email protected]>
+
+- Update to 0.8.5:
+  * Fix screencasting on older wlroots (<= 0.18) compositors.
+  * Fix various memory safety issues.
+
+-------------------------------------------------------------------

Old:
----
  xdg-desktop-portal-wlr-0.8.4.tar.gz
  xdg-desktop-portal-wlr-0.8.4.tar.gz.sig

New:
----
  xdg-desktop-portal-wlr-0.8.5.tar.gz
  xdg-desktop-portal-wlr-0.8.5.tar.gz.sig

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

Other differences:
------------------
++++++ xdg-desktop-portal-wlr.spec ++++++
--- /var/tmp/diff_new_pack.xNjdXJ/_old  2026-10-29 22:33:23.463444735 +0100
+++ /var/tmp/diff_new_pack.xNjdXJ/_new  2026-10-29 22:33:23.466444859 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           xdg-desktop-portal-wlr
-Version:        0.8.4
+Version:        0.8.5
 Release:        0
 Summary:        An xdg-desktop-portal backend for wlroots
 License:        MIT

++++++ xdg-desktop-portal-wlr-0.8.4.tar.gz -> 
xdg-desktop-portal-wlr-0.8.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xdg-desktop-portal-wlr-0.8.4/meson.build 
new/xdg-desktop-portal-wlr-0.8.5/meson.build
--- old/xdg-desktop-portal-wlr-0.8.4/meson.build        2026-07-28 
18:58:20.000000000 +0200
+++ new/xdg-desktop-portal-wlr-0.8.5/meson.build        2026-10-29 
16:54:48.000000000 +0100
@@ -1,7 +1,7 @@
 project(
        'xdg-desktop-portal-wlr',
        'c',
-       version: '0.8.4',
+       version: '0.8.5',
        license: 'MIT',
        meson_version: '>=0.60.0',
        default_options: ['c_std=c11', 'warning_level=2', 'werror=true'],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xdg-desktop-portal-wlr-0.8.4/src/screencast/screencast.c 
new/xdg-desktop-portal-wlr-0.8.5/src/screencast/screencast.c
--- old/xdg-desktop-portal-wlr-0.8.4/src/screencast/screencast.c        
2026-07-28 18:58:20.000000000 +0200
+++ new/xdg-desktop-portal-wlr-0.8.5/src/screencast/screencast.c        
2026-10-29 16:54:48.000000000 +0100
@@ -333,7 +333,7 @@
        struct xdpw_screencast_context *ctx = &state->screencast;
 
        int ret = 0;
-       struct xdpw_session *sess, *tmp_s;
+       struct xdpw_session *sess, *iter, *tmp_s;
        sd_bus_message *reply = NULL;
 
        logprint(INFO, "dbus: select sources method invoked");
@@ -353,15 +353,17 @@
        logprint(INFO, "dbus: app_id: %s", app_id);
 
        sess = NULL;
-       wl_list_for_each_reverse_safe(sess, tmp_s, &state->xdpw_sessions, link) 
{
-               if (strcmp(sess->session_handle, session_handle) == 0) {
-                               logprint(DEBUG, "dbus: select sources: found 
matching session %s", sess->session_handle);
+       wl_list_for_each_reverse_safe(iter, tmp_s, &state->xdpw_sessions, link) 
{
+               if (strcmp(iter->session_handle, session_handle) == 0) {
+                               logprint(DEBUG, "dbus: select sources: found 
matching session %s", iter->session_handle);
+                               sess = iter;
                                break;
                }
        }
        if (!sess) {
-               logprint(WARN, "dbus: select sources: no matching session %s 
found", sess->session_handle);
-               goto error;
+               logprint(WARN, "dbus: select sources: no matching session %s 
found", session_handle);
+               return sd_bus_error_setf(ret_error, SD_BUS_ERROR_INVALID_ARGS,
+                       "Unknown session %s", session_handle);
        }
 
        // default to embedded cursor mode if not specified
@@ -583,6 +585,7 @@
                if (strcmp(sess->session_handle, session_handle) == 0) {
                                logprint(DEBUG, "dbus: start: found matching 
session %s", sess->session_handle);
                                cast = 
sess->screencast_data.screencast_instance;
+                               break;
                }
        }
        if (!cast) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xdg-desktop-portal-wlr-0.8.4/src/screencast/wlr_screencopy.c 
new/xdg-desktop-portal-wlr-0.8.5/src/screencast/wlr_screencopy.c
--- old/xdg-desktop-portal-wlr-0.8.4/src/screencast/wlr_screencopy.c    
2026-07-28 18:58:20.000000000 +0200
+++ new/xdg-desktop-portal-wlr-0.8.5/src/screencast/wlr_screencopy.c    
2026-10-29 16:54:48.000000000 +0100
@@ -32,6 +32,14 @@
        logprint(TRACE, "wlroots: frame destroyed");
 }
 
+// Ends the current capture cycle: hand the buffer back to PipeWire and drop
+// the wlr frame. We drive the graph, so ask for the next cycle ourselves.
+static void wlr_frame_done(struct xdpw_screencast_instance *cast) {
+       xdpw_pwr_enqueue_buffer(cast);
+       wlr_frame_finish(cast);
+       pw_stream_trigger_process(cast->stream);
+}
+
 static void wlr_frame_buffer_done(void *data,
                struct zwlr_screencopy_frame_v1 *frame);
 
@@ -137,16 +145,14 @@
 
        if (!cast->current_frame.xdpw_buffer) {
                logprint(WARN, "wlroots: no current buffer");
-               xdpw_pwr_enqueue_buffer(cast);
-               wlr_frame_finish(cast);
+               wlr_frame_done(cast);
                return;
        }
 
        if (!check_constraints(&cast->current_constraints, 
cast->current_frame.xdpw_buffer)) {
                logprint(DEBUG, "wlroots: buffer constraints changed");
                pwr_update_stream_param(cast);
-               xdpw_pwr_enqueue_buffer(cast);
-               wlr_frame_finish(cast);
+               wlr_frame_done(cast);
                return;
        }
 
@@ -199,8 +205,7 @@
        cast->current_frame.completed = true;
        logprint(TRACE, "wlroots: timestamp %"PRIu64":%"PRIu32, 
cast->current_frame.tv_sec, cast->current_frame.tv_nsec);
 
-       xdpw_pwr_enqueue_buffer(cast);
-       wlr_frame_finish(cast);
+       wlr_frame_done(cast);
 }
 
 static void wlr_frame_failed(void *data,
@@ -212,8 +217,7 @@
 
        logprint(TRACE, "wlroots: failed event handler");
 
-       xdpw_pwr_enqueue_buffer(cast);
-       wlr_frame_finish(cast);
+       wlr_frame_done(cast);
 }
 
 static const struct zwlr_screencopy_frame_v1_listener wlr_frame_listener = {

Reply via email to