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 = {