Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pipewire for openSUSE:Factory checked in at 2026-03-17 19:02:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pipewire (Old) and /work/SRC/openSUSE:Factory/.pipewire.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pipewire" Tue Mar 17 19:02:59 2026 rev:151 rq:1339425 version:1.6.2 Changes: -------- --- /work/SRC/openSUSE:Factory/pipewire/pipewire.changes 2026-03-10 17:47:19.780727828 +0100 +++ /work/SRC/openSUSE:Factory/.pipewire.new.8177/pipewire.changes 2026-03-17 19:04:19.920260087 +0100 @@ -1,0 +2,31 @@ +Mon Mar 16 17:19:24 UTC 2026 - Antonio Larrosa <[email protected]> + +- Update to version 1.6.2: + * This is a bugfix release that is API and ABI compatible with + the previous 1.6.x releases. + * Highlights + - Fix a potential crash when the wrong memory was freed. + - Fix a optimization with shared memory over some links that + could cause errors later on. + - Fix SOFA filter and default control input in LADSPA and LV2. + - Some other small fixes and improvements. + * PipeWire + - Remove an optimization to skip share mem in links, it causes + problems later on. (#5159 (closed)) + * Modules + - Don't try to free invalid memory or close invalid fds when + the client aborted before allocating buffer memory. + (#5162 (closed)) + * SPA + - support ACP_IGNORE_DB in udev. + - Use 0x as a prefix for hex values. + - Mark Props as write-only in libcamera. + - Small optimization in the audio mixer. + - Fix initialization of control properties for SOFA and biquads + in the filter-graph. (#5152 (closed)) + - Fix min/max default values for LADSPA and LV2. + * JACK + - Fix jack_port_type_id(). Return values that are compatible + with JACK1/2. + +------------------------------------------------------------------- Old: ---- pipewire-1.6.1.obscpio New: ---- pipewire-1.6.2.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pipewire.spec ++++++ --- /var/tmp/diff_new_pack.ND8HjF/_old 2026-03-17 19:04:20.636289759 +0100 +++ /var/tmp/diff_new_pack.ND8HjF/_new 2026-03-17 19:04:20.640289925 +0100 @@ -71,7 +71,7 @@ %bcond_with aptx Name: pipewire -Version: 1.6.1 +Version: 1.6.2 Release: 0 Summary: A Multimedia Framework designed to be an audio and video server and more License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.ND8HjF/_old 2026-03-17 19:04:20.680291584 +0100 +++ /var/tmp/diff_new_pack.ND8HjF/_new 2026-03-17 19:04:20.696292246 +0100 @@ -3,7 +3,7 @@ <service name="obs_scm" mode="manual"> <param name="scm">git</param> <param name="url">https://gitlab.freedesktop.org/pipewire/pipewire.git</param> - <param name="revision">1.6.1</param> + <param name="revision">1.6.2</param> <param name="versionformat">@PARENT_TAG@</param> <!-- <param name="revision">636cbae9b6cebc4ba55903e2a686f4c4a2bd4193</param> ++++++ pipewire-1.6.1.obscpio -> pipewire-1.6.2.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/NEWS new/pipewire-1.6.2/NEWS --- old/pipewire-1.6.1/NEWS 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/NEWS 2026-03-16 12:54:17.000000000 +0100 @@ -1,3 +1,39 @@ +# PipeWire 1.6.2 (2026-03-16) + +This is a bugfix release that is API and ABI compatible with the previous +1.6.x releases. + +## Highlights + - Fix a potential crash when the wrong memory was freed. + - Fix a optimization with shared memory over some links that could + cause errors later on. + - Fix SOFA filter and default control input in LADSPA and LV2. + - Some other small fixes and improvements. + + +## PipeWire + - Remove an optimization to skip share mem in links, it causes problems + later on. (#5159) + +## Modules + - Don't try to free invalid memory or close invalid fds when the client + aborted before allocating buffer memory. (#5162) + +## SPA + - support ACP_IGNORE_DB in udev. + - Use 0x as a prefix for hex values. + - Mark Props as write-only in libcamera. + - Small optimization in the audio mixer. + - Fix initialization of control properties for SOFA and biquads in the + filter-graph. (#5152) + - Fix min/max default values for LADSPA and LV2. + +## JACK + - Fix jack_port_type_id(). Return values that are compatible with JACK1/2. + + +Older versions: + # PipeWire 1.6.1 (2026-03-09) This is a bugfix release that is API and ABI compatible with the previous @@ -28,8 +64,6 @@ ## Tools - Fix playback of encoded formats. (#5155) -Older versions: - # PipeWire 1.6.0 (2026-02-19) This is the 1.6 release that is API and ABI compatible with previous diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/doc/DoxygenLayout.xml new/pipewire-1.6.2/doc/DoxygenLayout.xml --- old/pipewire-1.6.1/doc/DoxygenLayout.xml 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/doc/DoxygenLayout.xml 2026-03-16 12:54:17.000000000 +0100 @@ -44,6 +44,7 @@ <tab type="usergroup" title="PipeWire Versions"> <tab type="user" url="https://docs.pipewire.org/1.2/" title="1.2.x"/> <tab type="user" url="https://docs.pipewire.org/1.4/" title="1.4.x"/> + <tab type="user" url="https://docs.pipewire.org/1.6/" title="1.6.x"/> <tab type="user" url="https://docs.pipewire.org/devel/" title="Development"/> </tab> </navindex> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/doc/dox/internals/dma-buf.dox new/pipewire-1.6.2/doc/dox/internals/dma-buf.dox --- old/pipewire-1.6.1/doc/dox/internals/dma-buf.dox 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/doc/dox/internals/dma-buf.dox 2026-03-16 12:54:17.000000000 +0100 @@ -349,10 +349,10 @@ params[n_params++] = spa_pod_builder_pop(&b, &f); ``` -After having received the first \ref SPA_PARAM_PeerCapability param, if it contained the \ref -PW_CAPABILITY_DEVICE_ID set to `true`, the full set of formats can be sent using \ref -pw_stream_update_params following by activating the stream using -`pw_stream_set_active(stream, true)`. +After having received the first \ref SPA_PARAM_PeerCapability param, if it contained the +\ref PW_CAPABILITY_DEVICE_ID_NEGOTIATION set to a supported API version number, the full +set of formats can be sent using \ref pw_stream_update_params following by activating the +stream usina supported API version numberstream_set_active(stream, true)`. Note that the first \ref SPA_PARAM_Format received may be the result of the initial format negotian with bare minimum parameters, and will be superseded by the result of the format diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/meson.build new/pipewire-1.6.2/meson.build --- old/pipewire-1.6.1/meson.build 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/meson.build 2026-03-16 12:54:17.000000000 +0100 @@ -1,5 +1,5 @@ project('pipewire', ['c' ], - version : '1.6.1', + version : '1.6.2', license : [ 'MIT', 'LGPL-2.1-or-later', 'GPL-2.0-only' ], meson_version : '>= 0.61.1', default_options : [ 'warning_level=3', @@ -116,6 +116,7 @@ '-Werror=old-style-definition', '-Werror=missing-parameter-type', '-Werror=strict-prototypes', + '-Werror=discarded-qualifiers', ] add_project_arguments(cc.get_supported_arguments(cc_flags), language: 'c') add_project_arguments(cc_native.get_supported_arguments(cc_flags), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/pipewire-jack/src/meson.build new/pipewire-1.6.2/pipewire-jack/src/meson.build --- old/pipewire-1.6.1/pipewire-jack/src/meson.build 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/pipewire-jack/src/meson.build 2026-03-16 12:54:17.000000000 +0100 @@ -55,7 +55,7 @@ pipewire_jackserver_sources, soversion : soversion, version : libjackversion, - c_args : pipewire_jack_c_args, + c_args : pipewire_jack_c_args + '-DLIBJACKSERVER', include_directories : [configinc, jack_inc], dependencies : [pipewire_dep, mathlib], install : true, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/pipewire-jack/src/pipewire-jack.c new/pipewire-1.6.2/pipewire-jack/src/pipewire-jack.c --- old/pipewire-1.6.1/pipewire-jack/src/pipewire-jack.c 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/pipewire-jack/src/pipewire-jack.c 2026-03-16 12:54:17.000000000 +0100 @@ -4887,9 +4887,21 @@ c->activation->pending_sync = true; spa_list_for_each(o, &c->context.objects, link) { +#if !defined(LIBJACKSERVER) if (o->type != INTERFACE_Port || o->port.port == NULL || o->port.port->client != c || !o->port.port->valid) continue; +#else + /* emits all foreign active ports, skips own (already announced via jack_port_register) */ + if (o->type != INTERFACE_Port || o->removed) + continue; + /* own ports are handled by jack_port_register */ + if (o->port.port != NULL && o->port.port->client == c) + continue; + /* only announce ports whose node is active */ + if (o->port.node != NULL && !node_is_active(c, o->port.node)) + continue; +#endif o->registered = 0; queue_notify(c, NOTIFY_TYPE_PORTREGISTRATION, o, 1, NULL); } @@ -5325,7 +5337,7 @@ pw_thread_loop_lock(c->context.loop); str = pw_properties_get(c->props, PW_KEY_NODE_GROUP); if (str != NULL) { - char *p = strstr(str, ",pipewire.freewheel"); + const char *p = strstr(str, ",pipewire.freewheel"); if (p == NULL) p = strstr(str, "pipewire.freewheel"); if (p == NULL && onoff) @@ -6012,7 +6024,16 @@ return_val_if_fail(o != NULL, 0); if (o->type != INTERFACE_Port) return TYPE_ID_OTHER; - return o->port.type_id; + + /* map internal type IDs to jack1/jack2 compatible public values */ + switch (o->port.type_id) { + case TYPE_ID_AUDIO: return 0; + case TYPE_ID_MIDI: + case TYPE_ID_OSC: + case TYPE_ID_UMP: return 1; /* all MIDI variants map to 1 */ + case TYPE_ID_VIDEO: return 3; /* video maps to 3 */ + default: return o->port.type_id; + } } SPA_EXPORT diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/spa/plugins/alsa/alsa-udev.c new/pipewire-1.6.2/spa/plugins/alsa/alsa-udev.c --- old/pipewire-1.6.1/spa/plugins/alsa/alsa-udev.c 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/spa/plugins/alsa/alsa-udev.c 2026-03-16 12:54:17.000000000 +0100 @@ -538,6 +538,9 @@ if ((str = udev_device_get_property_value(udev_device, "ACP_PROFILE_SET")) && *str) items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_PROFILE_SET, str); + if ((str = udev_device_get_property_value(udev_device, "ACP_IGNORE_DB")) && *str) + items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_API_ALSA_IGNORE_DB, str); + if ((str = udev_device_get_property_value(udev_device, "SOUND_CLASS")) && *str) items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_CLASS, str); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/spa/plugins/audiomixer/audiomixer.c new/pipewire-1.6.2/spa/plugins/audiomixer/audiomixer.c --- old/pipewire-1.6.1/spa/plugins/audiomixer/audiomixer.c 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/spa/plugins/audiomixer/audiomixer.c 2026-03-16 12:54:17.000000000 +0100 @@ -725,7 +725,7 @@ port->io[0] = info->data; port->io[1] = info->data; } - if (!port->active) { + if (port->direction == SPA_DIRECTION_INPUT && !port->active) { spa_list_append(&info->impl->mix_list, &port->mix_link); port->active = true; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/spa/plugins/audiomixer/mixer-dsp.c new/pipewire-1.6.2/spa/plugins/audiomixer/mixer-dsp.c --- old/pipewire-1.6.1/spa/plugins/audiomixer/mixer-dsp.c 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/spa/plugins/audiomixer/mixer-dsp.c 2026-03-16 12:54:17.000000000 +0100 @@ -718,7 +718,7 @@ port->io[0] = info->data; port->io[1] = info->data; } - if (!port->active) { + if (port->direction == SPA_DIRECTION_INPUT && !port->active) { spa_list_append(&info->impl->mix_list, &port->mix_link); port->active = true; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/spa/plugins/bluez5/bluez5-dbus.c new/pipewire-1.6.2/spa/plugins/bluez5/bluez5-dbus.c --- old/pipewire-1.6.1/spa/plugins/bluez5/bluez5-dbus.c 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/spa/plugins/bluez5/bluez5-dbus.c 2026-03-16 12:54:17.000000000 +0100 @@ -720,14 +720,12 @@ /** Get feature name at \a i, or NULL if uuid doesn't match */ static const char *bap_features_get_name(struct bap_features *feat, size_t i, const char *uuid) { - char *pos; - if (i >= feat->dict.n_items) return NULL; if (!spa_streq(feat->dict.items[i].value, uuid)) return NULL; - pos = strchr(feat->dict.items[i].key, ':'); + const char *pos = strchr(feat->dict.items[i].key, ':'); if (!pos) return NULL; return pos + 1; @@ -1336,7 +1334,6 @@ static int parse_modalias(const char *modalias, uint16_t *source, uint16_t *vendor, uint16_t *product, uint16_t *version) { - char *pos; unsigned int src, i, j, k; if (spa_strstartswith(modalias, "bluetooth:")) @@ -1346,7 +1343,7 @@ else return -EINVAL; - pos = strchr(modalias, ':'); + const char *pos = strchr(modalias, ':'); if (pos == NULL) return -EINVAL; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/spa/plugins/filter-graph/filter-graph.c new/pipewire-1.6.2/spa/plugins/filter-graph/filter-graph.c --- old/pipewire-1.6.1/spa/plugins/filter-graph/filter-graph.c 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/spa/plugins/filter-graph/filter-graph.c 2026-03-16 12:54:17.000000000 +0100 @@ -1035,8 +1035,8 @@ } } else if (SPA_FGA_IS_PORT_CONTROL(fp->flags)) { if (SPA_FGA_IS_PORT_INPUT(fp->flags)) { - spa_log_info(impl->log, "using port %lu ('%s') as control %d", p, - fp->name, desc->n_control); + spa_log_info(impl->log, "using port %lu ('%s') as control %d %f/%f/%f", p, + fp->name, desc->n_control, fp->def, fp->min, fp->max); desc->control[desc->n_control++] = p; } else if (SPA_FGA_IS_PORT_OUTPUT(fp->flags)) { @@ -1622,6 +1622,7 @@ goto error; } } + node->control_changed = true; } /* then link ports */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/spa/plugins/filter-graph/plugin_ladspa.c new/pipewire-1.6.2/spa/plugins/filter-graph/plugin_ladspa.c --- old/pipewire-1.6.1/spa/plugins/filter-graph/plugin_ladspa.c 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/spa/plugins/filter-graph/plugin_ladspa.c 2026-03-16 12:54:17.000000000 +0100 @@ -7,6 +7,7 @@ #include <dlfcn.h> #include <math.h> #include <limits.h> +#include <float.h> #include <spa/utils/result.h> #include <spa/utils/defs.h> @@ -113,8 +114,14 @@ LADSPA_PortRangeHintDescriptor hint = d->PortRangeHints[p].HintDescriptor; LADSPA_Data lower, upper; - lower = d->PortRangeHints[p].LowerBound; - upper = d->PortRangeHints[p].UpperBound; + if (hint & LADSPA_HINT_BOUNDED_BELOW) + lower = d->PortRangeHints[p].LowerBound; + else + lower = -FLT_MAX; + if (hint & LADSPA_HINT_BOUNDED_ABOVE) + upper = d->PortRangeHints[p].UpperBound; + else + upper = FLT_MAX; port->hint = 0; if (hint & LADSPA_HINT_TOGGLED) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/spa/plugins/filter-graph/plugin_lv2.c new/pipewire-1.6.2/spa/plugins/filter-graph/plugin_lv2.c --- old/pipewire-1.6.1/spa/plugins/filter-graph/plugin_lv2.c 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/spa/plugins/filter-graph/plugin_lv2.c 2026-03-16 12:54:17.000000000 +0100 @@ -560,6 +560,17 @@ fp->min = mins[i]; fp->max = maxes[i]; fp->def = controls[i]; + + if (isnan(fp->min)) + fp->min = -FLT_MAX; + if (isnan(fp->max)) + fp->max = FLT_MAX; + if (isnan(fp->def)) + fp->def = 0.0f; + if (fp->max <= fp->min) + fp->max = FLT_MAX; + if (fp->def <= fp->min) + fp->min = -FLT_MAX; } return &desc->desc; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/spa/plugins/libcamera/libcamera-source.cpp new/pipewire-1.6.2/spa/plugins/libcamera/libcamera-source.cpp --- old/pipewire-1.6.1/spa/plugins/libcamera/libcamera-source.cpp 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/spa/plugins/libcamera/libcamera-source.cpp 2026-03-16 12:54:17.000000000 +0100 @@ -2163,7 +2163,7 @@ &impl_node, this); params[NODE_PropInfo] = SPA_PARAM_INFO(SPA_PARAM_PropInfo, SPA_PARAM_INFO_READ); - params[NODE_Props] = SPA_PARAM_INFO(SPA_PARAM_Props, SPA_PARAM_INFO_READWRITE); + params[NODE_Props] = SPA_PARAM_INFO(SPA_PARAM_Props, SPA_PARAM_INFO_WRITE); params[NODE_EnumFormat] = SPA_PARAM_INFO(SPA_PARAM_EnumFormat, SPA_PARAM_INFO_READ); params[NODE_Format] = SPA_PARAM_INFO(SPA_PARAM_Format, SPA_PARAM_INFO_WRITE); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/spa/plugins/support/logger.c new/pipewire-1.6.2/spa/plugins/support/logger.c --- old/pipewire-1.6.1/spa/plugins/support/logger.c 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/spa/plugins/support/logger.c 2026-03-16 12:54:17.000000000 +0100 @@ -73,7 +73,7 @@ char timestamp[18] = {0}; char topicstr[32] = {0}; char filename[64] = {0}; - char location[1000 + RESERVED_LENGTH], *p, *s; + char location[1000 + RESERVED_LENGTH], *p; static const char * const levels[] = { "-", "E", "W", "I", "D", "T", "*T*" }; const char *prefix = "", *suffix = ""; int size, len; @@ -118,7 +118,7 @@ if (impl->line && line != 0) { - s = strrchr(file, '/'); + const char *s = strrchr(file, '/'); spa_scnprintf(filename, sizeof(filename), "[%16.16s:%5i %s()]", s ? s + 1 : file, line, func); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/spa/plugins/v4l2/v4l2-device.c new/pipewire-1.6.2/spa/plugins/v4l2/v4l2-device.c --- old/pipewire-1.6.1/spa/plugins/v4l2/v4l2-device.c 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/spa/plugins/v4l2/v4l2-device.c 2026-03-16 12:54:17.000000000 +0100 @@ -98,9 +98,9 @@ (this->dev.cap.version >> 8) & 0xFF, (this->dev.cap.version) & 0xFF); ADD_ITEM(SPA_KEY_API_V4L2_CAP_VERSION, version); - snprintf(capabilities, sizeof(capabilities), "%08x", this->dev.cap.capabilities); + snprintf(capabilities, sizeof(capabilities), "0x%08x", this->dev.cap.capabilities); ADD_ITEM(SPA_KEY_API_V4L2_CAP_CAPABILITIES, capabilities); - snprintf(device_caps, sizeof(device_caps), "%08x", this->dev.cap.device_caps); + snprintf(device_caps, sizeof(device_caps), "0x%08x", this->dev.cap.device_caps); ADD_ITEM(SPA_KEY_API_V4L2_CAP_DEVICE_CAPS, device_caps); #undef ADD_ITEM info.props = &SPA_DICT_INIT(items, n_items); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/src/modules/module-client-node/client-node.c new/pipewire-1.6.2/src/modules/module-client-node/client-node.c --- old/pipewire-1.6.1/src/modules/module-client-node/client-node.c 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/src/modules/module-client-node/client-node.c 2026-03-16 12:54:17.000000000 +0100 @@ -264,7 +264,8 @@ case SPA_DATA_DmaBuf: case SPA_DATA_SyncObj: pw_log_debug("%p: close fd:%d", impl, (int)d->fd); - close(d->fd); + if (d->fd != -1) + close(d->fd); break; } } @@ -864,8 +865,11 @@ memcpy(&b->datas[j], d, sizeof(struct spa_data)); - if (flags & SPA_NODE_BUFFERS_FLAG_ALLOC) + if (flags & SPA_NODE_BUFFERS_FLAG_ALLOC) { + b->datas[j].fd = -1; + b->datas[j].data = SPA_UINT32_TO_PTR(SPA_ID_INVALID); continue; + } switch (d->type) { case SPA_DATA_DmaBuf: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/src/pipewire/capabilities.h new/pipewire-1.6.2/src/pipewire/capabilities.h --- old/pipewire-1.6.1/src/pipewire/capabilities.h 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/src/pipewire/capabilities.h 2026-03-16 12:54:17.000000000 +0100 @@ -21,11 +21,14 @@ * \{ */ -/**< Link capable of device ID negotiation. The value is either "true" or "false" */ +/**< Link capable of device ID negotiation. The value is to the version of the + * API specification. */ #define PW_CAPABILITY_DEVICE_ID_NEGOTIATION "pipewire.device-id-negotiation" /**< Link with device ID negotition capability supports negotiating with - * provided list of devices. The value consists of a JSON encoded string array - * of base64 encoded dev_t values. */ + * a specific set of devices. The value of API version 1 consists of a JSON + * object containing a single key "available-devices" that contain a list of + * hexadecimal encoded `dev_t` device IDs. + */ #define PW_CAPABILITY_DEVICE_IDS "pipewire.device-ids" #define PW_CAPABILITY_DEVICE_ID "pipewire.device-id" /**< Link capable of device Id negotation */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pipewire-1.6.1/src/pipewire/impl-link.c new/pipewire-1.6.2/src/pipewire/impl-link.c --- old/pipewire-1.6.1/src/pipewire/impl-link.c 2026-03-09 10:17:11.000000000 +0100 +++ new/pipewire-1.6.2/src/pipewire/impl-link.c 2026-03-16 12:54:17.000000000 +0100 @@ -701,7 +701,10 @@ /* always enable async mode */ alloc_flags = PW_BUFFERS_FLAG_ASYNC; - if (output->node->remote || input->node->remote) + /* shared mem can only be used if both nodes are in the same process + * and we are sure that the buffers are never going to be shared + * because of the exclusive flag */ + if (output->node->remote || input->node->remote || !output->exclusive) alloc_flags |= PW_BUFFERS_FLAG_SHARED; if (output->node->driver) ++++++ pipewire.obsinfo ++++++ --- /var/tmp/diff_new_pack.ND8HjF/_old 2026-03-17 19:04:22.484366347 +0100 +++ /var/tmp/diff_new_pack.ND8HjF/_new 2026-03-17 19:04:22.492366678 +0100 @@ -1,5 +1,5 @@ name: pipewire -version: 1.6.1 -mtime: 1773047831 -commit: b7341d068947225fcdf62d39277606e8516d7f52 +version: 1.6.2 +mtime: 1773662057 +commit: 95da54a482b68475958bbc3fa572a9c20df0df74
