Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package wireplumber for openSUSE:Factory checked in at 2024-07-02 18:15:31 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/wireplumber (Old) and /work/SRC/openSUSE:Factory/.wireplumber.new.18349 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "wireplumber" Tue Jul 2 18:15:31 2024 rev:41 rq:1184890 version:0.5.5 Changes: -------- --- /work/SRC/openSUSE:Factory/wireplumber/wireplumber.changes 2024-06-29 15:16:42.114641370 +0200 +++ /work/SRC/openSUSE:Factory/.wireplumber.new.18349/wireplumber.changes 2024-07-02 18:15:34.817510180 +0200 @@ -1,0 +2,13 @@ +Tue Jul 2 08:14:44 UTC 2024 - Antonio Larrosa <alarrosa@suse.com> + +- Update to version 0.5.5: + * Highlights: + - Hotfix release to address crashes in the Bluetooth HSP/HFP + autoswitch functionality that were side-effects of some + changes that were part of the role-based linking policy + (#682) + * Improvements: + - wpctl will now properly show a '*' in front of sink filters + when they are selected as the default sink (!660) + +------------------------------------------------------------------- Old: ---- wireplumber-0.5.4+git2.96dc045.obscpio New: ---- wireplumber-0.5.5.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ wireplumber.spec ++++++ --- /var/tmp/diff_new_pack.gIY8c1/_old 2024-07-02 18:15:35.557537260 +0200 +++ /var/tmp/diff_new_pack.gIY8c1/_new 2024-07-02 18:15:35.561537406 +0200 @@ -22,7 +22,7 @@ %define sover 0 %define libwireplumber libwireplumber-%{apiver_str}-%{sover} Name: wireplumber -Version: 0.5.4+git2.96dc045 +Version: 0.5.5 Release: 0 Summary: Session / policy manager implementation for PipeWire License: MIT @@ -150,6 +150,7 @@ Requires: %{name} = %{version} Requires: zsh Supplements: (wireplumber and zsh) +BuildArch: noarch %description zsh-completion Optional dependency offering zsh completion for various wpctl parameters. ++++++ _service ++++++ --- /var/tmp/diff_new_pack.gIY8c1/_old 2024-07-02 18:15:35.585538284 +0200 +++ /var/tmp/diff_new_pack.gIY8c1/_new 2024-07-02 18:15:35.589538431 +0200 @@ -3,13 +3,13 @@ <service name="obs_scm" mode="manual"> <param name="scm">git</param> <param name="url">https://gitlab.freedesktop.org/pipewire/wireplumber.git</param> -<!-- - <param name="revision">0.5.4</param> + <param name="revision">0.5.5</param> <param name="versionformat">@PARENT_TAG@</param> ---> +<!-- <param name="revision">master</param> <param name="versionformat">@PARENT_TAG@+git@TAG_OFFSET@.%h</param> <param name="changesgenerate">enable</param> +--> <!-- <param name="revision">master</param> <param name="versionformat">@PARENT_TAG@+git%cd.%h</param> ++++++ wireplumber-0.5.4+git2.96dc045.obscpio -> wireplumber-0.5.5.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wireplumber-0.5.4+git2.96dc045/NEWS.rst new/wireplumber-0.5.5/NEWS.rst --- old/wireplumber-0.5.4+git2.96dc045/NEWS.rst 2024-06-27 17:36:42.000000000 +0200 +++ new/wireplumber-0.5.5/NEWS.rst 2024-06-28 17:18:02.000000000 +0200 @@ -1,8 +1,25 @@ -WirePlumber 0.5.4 +WirePlumber 0.5.5 ~~~~~~~~~~~~~~~~~ Highlights: + - Hotfix release to address crashes in the Bluetooth HSP/HFP autoswitch + functionality that were side-effects of some changes that were part + of the role-based linking policy (#682) + +Improvements: + + - wpctl will now properly show a '*' in front of sink filters when they are + selected as the default sink (!660) + +Past releases +~~~~~~~~~~~~~ + +WirePlumber 0.5.4 +................. + +Highlights: + - Refactored the role-based linking policy (previously known also as "endpoints" or "virtual items" policy) to blend in with the standard desktop policy. It is now possible use role-based sinks alongside standard desktop @@ -34,9 +51,6 @@ - Fixed a rare issue that could cause WirePlumber to crash when dealing with a device object that didn't have the "device.name" property set (#674) -Past releases -~~~~~~~~~~~~~ - WirePlumber 0.5.3 ................. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wireplumber-0.5.4+git2.96dc045/lib/wp/core.c new/wireplumber-0.5.5/lib/wp/core.c --- old/wireplumber-0.5.4+git2.96dc045/lib/wp/core.c 2024-06-27 17:36:42.000000000 +0200 +++ new/wireplumber-0.5.5/lib/wp/core.c 2024-06-28 17:18:02.000000000 +0200 @@ -886,13 +886,6 @@ /* Add the registry listener */ wp_registry_attach (&self->registry, self->pw_core); - /* Set the export core to be the one shared between pipewire modules */ - if (pw_properties_get_bool (pw_core_get_properties (self->pw_core), - "wireplumber.export-core", false)) { - wp_debug_object (self, "set export core to be shared in pipewire modules"); - pw_context_set_object (self->pw_context, PW_TYPE_INTERFACE_Core, self->pw_core); - } - return TRUE; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wireplumber-0.5.4+git2.96dc045/meson.build new/wireplumber-0.5.5/meson.build --- old/wireplumber-0.5.4+git2.96dc045/meson.build 2024-06-27 17:36:42.000000000 +0200 +++ new/wireplumber-0.5.5/meson.build 2024-06-28 17:18:02.000000000 +0200 @@ -1,5 +1,5 @@ project('wireplumber', ['c'], - version : '0.5.4', + version : '0.5.5', license : 'MIT', meson_version : '>= 0.59.0', default_options : [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wireplumber-0.5.4+git2.96dc045/src/config/wireplumber.conf.d.examples/media-role-nodes.conf new/wireplumber-0.5.5/src/config/wireplumber.conf.d.examples/media-role-nodes.conf --- old/wireplumber-0.5.4+git2.96dc045/src/config/wireplumber.conf.d.examples/media-role-nodes.conf 2024-06-27 17:36:42.000000000 +0200 +++ new/wireplumber-0.5.5/src/config/wireplumber.conf.d.examples/media-role-nodes.conf 2024-06-28 17:18:02.000000000 +0200 @@ -36,6 +36,11 @@ merge = { arguments = { capture.props = { + # Explicitly mark all these sinks as valid role-based policy + # targets, meaning that any links between streams and these sinks + # will be managed by the role-based policy + policy.role-based.target = true + audio.position = [ FL, FR ] media.class = Audio/Sink } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wireplumber-0.5.4+git2.96dc045/src/scripts/lib/linking-utils.lua new/wireplumber-0.5.5/src/scripts/lib/linking-utils.lua --- old/wireplumber-0.5.4+git2.96dc045/src/scripts/lib/linking-utils.lua 2024-06-27 17:36:42.000000000 +0200 +++ new/wireplumber-0.5.5/src/scripts/lib/linking-utils.lua 2024-06-28 17:18:02.000000000 +0200 @@ -63,7 +63,7 @@ for l in cutils.get_object_manager ("session-item"):iterate { type = "SiLink", Constraint { "item.factory.name", "=", "si-standard-link", type = "pw-global" }, - Constraint { "is.media.role.link", "=", true }, + Constraint { "is.role.policy.link", "=", true }, Constraint { "target.media.class", "=", lmc }, } do local props = l.properties @@ -122,6 +122,17 @@ end end +function lutils.is_role_policy_target (si_props, target_props) + -- role-based policy links are those that link to targets with + -- policy.role-based.target = true, unless the stream is a monitor + -- (usually pavucontrol) or the stream is linking to the monitor ports + -- of a sink (both are "input") + return Core.test_feature ("hooks.linking.role-based.rescan") + and cutils.parseBool (target_props["policy.role-based.target"]) + and not cutils.parseBool (si_props ["stream.monitor"]) + and si_props["item.node.direction"] ~= target_props["item.node.direction"] +end + function lutils.unwrap_select_target_event (self, event) local source = event:get_source () local si = event:get_subject () diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/find-best-target.lua new/wireplumber-0.5.5/src/scripts/linking/find-best-target.lua --- old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/find-best-target.lua 2024-06-27 17:36:42.000000000 +0200 +++ new/wireplumber-0.5.5/src/scripts/linking/find-best-target.lua 2024-06-28 17:18:02.000000000 +0200 @@ -13,7 +13,11 @@ SimpleEventHook { name = "linking/find-best-target", - after = "linking/find-default-target", + after = { "linking/find-defined-target", + "linking/find-filter-target", + "linking/find-media-role-target", + "linking/find-default-target" }, + before = "linking/prepare-link", interests = { EventInterest { Constraint { "event.type", "=", "select-target" }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/find-default-target.lua new/wireplumber-0.5.5/src/scripts/linking/find-default-target.lua --- old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/find-default-target.lua 2024-06-27 17:36:42.000000000 +0200 +++ new/wireplumber-0.5.5/src/scripts/linking/find-default-target.lua 2024-06-28 17:18:02.000000000 +0200 @@ -11,7 +11,10 @@ SimpleEventHook { name = "linking/find-default-target", - after = "linking/find-media-role-target", + after = { "linking/find-defined-target", + "linking/find-filter-target", + "linking/find-media-role-target" }, + before = "linking/prepare-link", interests = { EventInterest { Constraint { "event.type", "=", "select-target" }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/find-defined-target.lua new/wireplumber-0.5.5/src/scripts/linking/find-defined-target.lua --- old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/find-defined-target.lua 2024-06-27 17:36:42.000000000 +0200 +++ new/wireplumber-0.5.5/src/scripts/linking/find-defined-target.lua 2024-06-28 17:18:02.000000000 +0200 @@ -15,6 +15,7 @@ SimpleEventHook { name = "linking/find-defined-target", + before = "linking/prepare-link", interests = { EventInterest { Constraint { "event.type", "=", "select-target" }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/find-filter-target.lua new/wireplumber-0.5.5/src/scripts/linking/find-filter-target.lua --- old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/find-filter-target.lua 2024-06-27 17:36:42.000000000 +0200 +++ new/wireplumber-0.5.5/src/scripts/linking/find-filter-target.lua 2024-06-28 17:18:02.000000000 +0200 @@ -34,6 +34,7 @@ SimpleEventHook { name = "linking/find-filter-target", after = "linking/find-defined-target", + before = "linking/prepare-link", interests = { EventInterest { Constraint { "event.type", "=", "select-target" }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/find-media-role-target.lua new/wireplumber-0.5.5/src/scripts/linking/find-media-role-target.lua --- old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/find-media-role-target.lua 2024-06-27 17:36:42.000000000 +0200 +++ new/wireplumber-0.5.5/src/scripts/linking/find-media-role-target.lua 2024-06-28 17:18:02.000000000 +0200 @@ -12,7 +12,9 @@ SimpleEventHook { name = "linking/find-media-role-target", - after = "linking/find-filter-target", + after = { "linking/find-defined-target", + "linking/find-filter-target" }, + before = "linking/prepare-link", interests = { EventInterest { Constraint { "event.type", "=", "select-target" }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/get-filter-from-target.lua new/wireplumber-0.5.5/src/scripts/linking/get-filter-from-target.lua --- old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/get-filter-from-target.lua 2024-06-27 17:36:42.000000000 +0200 +++ new/wireplumber-0.5.5/src/scripts/linking/get-filter-from-target.lua 2024-06-28 17:18:02.000000000 +0200 @@ -13,7 +13,12 @@ SimpleEventHook { name = "linking/get-filter-from-target", - after = "linking/find-best-target", + after = { "linking/find-defined-target", + "linking/find-filter-target", + "linking/find-media-role-target", + "linking/find-default-target", + "linking/find-best-target" }, + before = "linking/prepare-link", interests = { EventInterest { Constraint { "event.type", "=", "select-target" }, @@ -23,8 +28,8 @@ local source, om, si, si_props, si_flags, target = lutils:unwrap_select_target_event (event) - -- bypass the hook if the target was not found or if the target is media role node - if target == nil or target.properties["device.intended-roles"] then + -- bypass the hook if the target was not found or if it is a role-based policy target + if target == nil or lutils.is_role_policy_target (si_props, target.properties) then return end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/link-target.lua new/wireplumber-0.5.5/src/scripts/linking/link-target.lua --- old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/link-target.lua 2024-06-27 17:36:42.000000000 +0200 +++ new/wireplumber-0.5.5/src/scripts/linking/link-target.lua 2024-06-28 17:18:02.000000000 +0200 @@ -63,13 +63,7 @@ out_item = target end - -- role links are those that link to targets with intended-roles - -- unless the stream is a monitor (usually pavucontrol) or the stream - -- is linking to the monitor ports of a sink (both are "input") - local is_media_role_link = Core.test_feature ("hooks.linking.role-based.rescan") - and target_props["device.intended-roles"] ~= nil - and not cutils.parseBool (si_props ["stream.monitor"]) - and si_props["item.node.direction"] ~= target_props["item.node.direction"] + local is_role_policy_link = lutils.is_role_policy_target (si_props, target_props) log:info (si, string.format ("link %s <-> %s passthrough:%s, exclusive:%s, media role link:%s", @@ -77,7 +71,7 @@ tostring (target_props ["node.name"]), tostring (passthrough), tostring (exclusive), - tostring (is_media_role_link))) + tostring (is_role_policy_link))) -- create and configure link si_link = SessionItem ("si-standard-link") @@ -93,7 +87,7 @@ ["policy.role-based.priority"] = target_props["policy.role-based.priority"], ["policy.role-based.action.same-priority"] = target_props["policy.role-based.action.same-priority"], ["policy.role-based.action.lower-priority"] = target_props["policy.role-based.action.lower-priority"], - ["is.media.role.link"] = is_media_role_link, + ["is.role.policy.link"] = is_role_policy_link, ["main.item.id"] = si.id, ["target.item.id"] = target.id, } then @@ -129,9 +123,9 @@ log:debug (si_link, "registered link between " .. tostring (si) .. " and " .. tostring (target)) - -- only activate non media role links because their activation is + -- only activate non role-based policy links because their activation is -- handled by rescan-media-role-links.lua - if not is_media_role_link then + if not is_role_policy_link then si_link:activate (Feature.SessionItem.ACTIVE, function (l, e) if e then transition:return_error (tostring (l) .. " link failed: " diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/prepare-link.lua new/wireplumber-0.5.5/src/scripts/linking/prepare-link.lua --- old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/prepare-link.lua 2024-06-27 17:36:42.000000000 +0200 +++ new/wireplumber-0.5.5/src/scripts/linking/prepare-link.lua 2024-06-28 17:18:02.000000000 +0200 @@ -14,7 +14,6 @@ SimpleEventHook { name = "linking/prepare-link", - after = "linking/get-filter-from-target", interests = { EventInterest { Constraint { "event.type", "=", "select-target" }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/rescan-media-role-links.lua new/wireplumber-0.5.5/src/scripts/linking/rescan-media-role-links.lua --- old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/rescan-media-role-links.lua 2024-06-27 17:36:42.000000000 +0200 +++ new/wireplumber-0.5.5/src/scripts/linking/rescan-media-role-links.lua 2024-06-28 17:18:02.000000000 +0200 @@ -85,7 +85,7 @@ -- on media client link added and removed Constraint { "event.type", "c", "session-item-added", "session-item-removed" }, Constraint { "event.session-item.interface", "=", "link" }, - Constraint { "is.media.role.link", "=", true }, + Constraint { "is.role.policy.link", "=", true }, }, EventInterest { -- on default metadata suspend.playback changed @@ -140,7 +140,7 @@ for link in om:iterate { type = "SiLink", - Constraint { "is.media.role.link", "=", true }, + Constraint { "is.role.policy.link", "=", true }, Constraint { "target.media.class", "=", mc }, } do -- deactivate all links if suspend playback metadata is present diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/rescan.lua new/wireplumber-0.5.5/src/scripts/linking/rescan.lua --- old/wireplumber-0.5.4+git2.96dc045/src/scripts/linking/rescan.lua 2024-06-27 17:36:42.000000000 +0200 +++ new/wireplumber-0.5.5/src/scripts/linking/rescan.lua 2024-06-28 17:18:02.000000000 +0200 @@ -82,7 +82,7 @@ out_flags.peer_id = nil end - if cutils.parseBool (silink.properties["is.media.role.link"]) then + if cutils.parseBool (silink.properties["is.role.policy.link"]) then lutils.clearPriorityMediaRoleLink(silink) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/wireplumber-0.5.4+git2.96dc045/src/tools/wpctl.c new/wireplumber-0.5.5/src/tools/wpctl.c --- old/wireplumber-0.5.4+git2.96dc045/src/tools/wpctl.c 2024-06-27 17:36:42.000000000 +0200 +++ new/wireplumber-0.5.5/src/tools/wpctl.c 2024-06-28 17:18:02.000000000 +0200 @@ -299,6 +299,7 @@ print_filter_node (const GValue *item, gpointer data) { struct print_context *context = data; + g_autoptr (WpPlugin) def_nodes_api = NULL; WpPipewireObject *obj = g_value_get_object (item); g_autoptr (WpIterator) it = NULL; g_auto (GValue) val = G_VALUE_INIT; @@ -309,6 +310,8 @@ if (g_hash_table_contains (context->printed_filters, link_group)) return; + def_nodes_api = wp_plugin_find (context->self->core, "default-nodes-api"); + /* Print all nodes for this link_group */ printf (TREE_INDENT_LINE " - %-60s\n", link_group); it = wp_object_manager_new_filtered_iterator (context->self->om, @@ -329,6 +332,11 @@ name = wp_pipewire_object_get_property (node, PW_KEY_NODE_DESCRIPTION); media_class = wp_pipewire_object_get_property (node, PW_KEY_MEDIA_CLASS); + context->default_node = -1; + if (def_nodes_api) + g_signal_emit_by_name (def_nodes_api, "get-default-node", media_class, + &context->default_node); + printf (TREE_INDENT_LINE "%c %4u. %-60s [%s]\n", context->default_node == id ? '*' : ' ', id, name, media_class); } ++++++ wireplumber.obsinfo ++++++ --- /var/tmp/diff_new_pack.gIY8c1/_old 2024-07-02 18:15:35.873548824 +0200 +++ /var/tmp/diff_new_pack.gIY8c1/_new 2024-07-02 18:15:35.873548824 +0200 @@ -1,5 +1,5 @@ name: wireplumber -version: 0.5.4+git2.96dc045 -mtime: 1719502602 -commit: 96dc04538210da6df121b064af8bd5e1c78e9d0a +version: 0.5.5 +mtime: 1719587882 +commit: 43e939c0e3c71ff0e6cc384cef901a50237f8144