From 752d6256e5204b958b0ef7905675a940b5e9172f Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Thu, 12 May 2022 16:42:50 +0300 Subject: gentoo resync : 12.05.2022 --- ...default-nodes-handle-nodes-without-Routes.patch | 51 ----- ...tooth-fix-string.find-crash-with-nil-stri.patch | 28 --- ...eam-do-not-crash-if-config.properties-is-.patch | 27 --- ...4.8-si-audio-adapter-relax-format-parsing.patch | 44 ----- ...x-va-list-APIs-for-different-architecture.patch | 214 --------------------- ...ment-which-options-need-to-be-turned-off-.patch | 87 +++++++++ ...icy-device-profile-clear-tables-when-devi.patch | 33 ++++ 7 files changed, 120 insertions(+), 364 deletions(-) delete mode 100644 media-video/wireplumber/files/wireplumber-0.4.7-default-nodes-handle-nodes-without-Routes.patch delete mode 100644 media-video/wireplumber/files/wireplumber-0.4.8-policy-bluetooth-fix-string.find-crash-with-nil-stri.patch delete mode 100644 media-video/wireplumber/files/wireplumber-0.4.8-restore-stream-do-not-crash-if-config.properties-is-.patch delete mode 100644 media-video/wireplumber/files/wireplumber-0.4.8-si-audio-adapter-relax-format-parsing.patch delete mode 100644 media-video/wireplumber/files/wireplumber-0.4.8-spa-json-fix-va-list-APIs-for-different-architecture.patch create mode 100644 media-video/wireplumber/files/wireplumber-0.4.9-config-document-which-options-need-to-be-turned-off-.patch create mode 100644 media-video/wireplumber/files/wireplumber-0.4.9-scripts-policy-device-profile-clear-tables-when-devi.patch (limited to 'media-video/wireplumber/files') diff --git a/media-video/wireplumber/files/wireplumber-0.4.7-default-nodes-handle-nodes-without-Routes.patch b/media-video/wireplumber/files/wireplumber-0.4.7-default-nodes-handle-nodes-without-Routes.patch deleted file mode 100644 index 3451ea73f74b..000000000000 --- a/media-video/wireplumber/files/wireplumber-0.4.7-default-nodes-handle-nodes-without-Routes.patch +++ /dev/null @@ -1,51 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/211f1e6b6cd4898121e4c2b821fae4dea6cc3317 -https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/163 - -From 211f1e6b6cd4898121e4c2b821fae4dea6cc3317 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Fri, 14 Jan 2022 16:28:48 +0100 -Subject: [PATCH] default-nodes: handle nodes without Routes - -When a node has not part of any EnumRoute, we must assume it is -available. - -Fixes selection of Pro Audio nodes as default nodes. ---- - modules/module-default-nodes.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/modules/module-default-nodes.c b/modules/module-default-nodes.c -index 32b2725b..15aadeaa 100644 ---- a/modules/module-default-nodes.c -+++ b/modules/module-default-nodes.c -@@ -108,6 +108,7 @@ node_has_available_routes (WpDefaultNodes * self, WpNode *node) - gint dev_id = dev_id_str ? atoi (dev_id_str) : -1; - gint cpd = cpd_str ? atoi (cpd_str) : -1; - g_autoptr (WpDevice) device = NULL; -+ gint found = 0; - - if (dev_id == -1 || cpd == -1) - return TRUE; -@@ -168,6 +169,7 @@ node_has_available_routes (WpDefaultNodes * self, WpNode *node) - for (; wp_iterator_next (it, &v); g_value_unset (&v)) { - gint32 *d = (gint32 *)g_value_get_pointer (&v); - if (d && *d == cpd) { -+ found++; - if (route_avail != SPA_PARAM_AVAILABILITY_no) - return TRUE; - } -@@ -175,6 +177,10 @@ node_has_available_routes (WpDefaultNodes * self, WpNode *node) - } - } - } -+ /* The node is part of a profile without routes so we assume it -+ * is available. This can happen for Pro Audio profiles */ -+ if (found == 0) -+ return TRUE; - - return FALSE; - } --- -GitLab - -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/211f1e6b6cd4898121e4c2b821fae4dea6cc3317 diff --git a/media-video/wireplumber/files/wireplumber-0.4.8-policy-bluetooth-fix-string.find-crash-with-nil-stri.patch b/media-video/wireplumber/files/wireplumber-0.4.8-policy-bluetooth-fix-string.find-crash-with-nil-stri.patch deleted file mode 100644 index 364f8df195cf..000000000000 --- a/media-video/wireplumber/files/wireplumber-0.4.8-policy-bluetooth-fix-string.find-crash-with-nil-stri.patch +++ /dev/null @@ -1,28 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/c4c5ca8e2215e5fc295b39af4504c43ed3fe176f - -From c4c5ca8e2215e5fc295b39af4504c43ed3fe176f Mon Sep 17 00:00:00 2001 -From: George Kiagiadakis -Date: Mon, 14 Feb 2022 10:38:51 +0200 -Subject: [PATCH] policy-bluetooth: fix string.find crash with nil string - -Fixes #193 ---- - src/scripts/policy-bluetooth.lua | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/scripts/policy-bluetooth.lua b/src/scripts/policy-bluetooth.lua -index 24fbffbb..f8f69a14 100644 ---- a/src/scripts/policy-bluetooth.lua -+++ b/src/scripts/policy-bluetooth.lua -@@ -118,7 +118,7 @@ local function isSwitched(device) - end - - local function isBluez5AudioSink(sink_name) -- if string.find(sink_name, "bluez_output.") ~= nil then -+ if sink_name and string.find(sink_name, "bluez_output.") ~= nil then - return true - end - return false --- -GitLab - diff --git a/media-video/wireplumber/files/wireplumber-0.4.8-restore-stream-do-not-crash-if-config.properties-is-.patch b/media-video/wireplumber/files/wireplumber-0.4.8-restore-stream-do-not-crash-if-config.properties-is-.patch deleted file mode 100644 index 5f4a838c36a6..000000000000 --- a/media-video/wireplumber/files/wireplumber-0.4.8-restore-stream-do-not-crash-if-config.properties-is-.patch +++ /dev/null @@ -1,27 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/5f96f69218273573e625475846269b3914cfcecf - -From 5f96f69218273573e625475846269b3914cfcecf Mon Sep 17 00:00:00 2001 -From: George Kiagiadakis -Date: Wed, 9 Feb 2022 13:35:13 +0200 -Subject: [PATCH] restore-stream: do not crash if config.properties is nil - -Fixes #190 ---- - src/scripts/restore-stream.lua | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/scripts/restore-stream.lua b/src/scripts/restore-stream.lua -index 404eede5..0c17bdd7 100644 ---- a/src/scripts/restore-stream.lua -+++ b/src/scripts/restore-stream.lua -@@ -10,6 +10,7 @@ - - -- Receive script arguments from config.lua - local config = ... or {} -+config.properties = config.properties or {} - config_restore_props = config.properties["restore-props"] or false - config_restore_target = config.properties["restore-target"] or false - --- -GitLab - diff --git a/media-video/wireplumber/files/wireplumber-0.4.8-si-audio-adapter-relax-format-parsing.patch b/media-video/wireplumber/files/wireplumber-0.4.8-si-audio-adapter-relax-format-parsing.patch deleted file mode 100644 index 93225b02d88b..000000000000 --- a/media-video/wireplumber/files/wireplumber-0.4.8-si-audio-adapter-relax-format-parsing.patch +++ /dev/null @@ -1,44 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/afbc0ce57aac7aee8dc1651de4620f15c73dbace - -From afbc0ce57aac7aee8dc1651de4620f15c73dbace Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Mon, 21 Feb 2022 15:21:36 +0100 -Subject: [PATCH] si-audio-adapter: relax format parsing - -Some nodes can omit the format/rate/channels to indicate that they can -deal with all possibilities and adapt to what they are linked to. - -See pipewire#876 ---- - modules/module-si-audio-adapter.c | 11 ++--------- - 1 file changed, 2 insertions(+), 9 deletions(-) - -diff --git a/modules/module-si-audio-adapter.c b/modules/module-si-audio-adapter.c -index f1f6218..84e393f 100644 ---- a/modules/module-si-audio-adapter.c -+++ b/modules/module-si-audio-adapter.c -@@ -158,19 +158,12 @@ si_audio_adapter_find_format (WpSiAudioAdapter * self, WpNode * node) - struct spa_pod *position = NULL; - wp_spa_pod_fixate (pod); - -- /* defaults */ - spa_zero(raw_format); -- raw_format.format = SPA_AUDIO_FORMAT_F32; -- raw_format.rate = si_audio_adapter_get_default_clock_rate (self); -- raw_format.channels = 2; -- raw_format.position[0] = SPA_AUDIO_CHANNEL_FL; -- raw_format.position[1] = SPA_AUDIO_CHANNEL_FR; -- - if (spa_pod_parse_object(wp_spa_pod_get_spa_pod (pod), - SPA_TYPE_OBJECT_Format, NULL, -- SPA_FORMAT_AUDIO_format, SPA_POD_Id(&raw_format.format), -+ SPA_FORMAT_AUDIO_format, SPA_POD_OPT_Id(&raw_format.format), - SPA_FORMAT_AUDIO_rate, SPA_POD_OPT_Int(&raw_format.rate), -- SPA_FORMAT_AUDIO_channels, SPA_POD_Int(&raw_format.channels), -+ SPA_FORMAT_AUDIO_channels, SPA_POD_OPT_Int(&raw_format.channels), - SPA_FORMAT_AUDIO_position, SPA_POD_OPT_Pod(&position)) < 0) - continue; - --- -2.35.1 - diff --git a/media-video/wireplumber/files/wireplumber-0.4.8-spa-json-fix-va-list-APIs-for-different-architecture.patch b/media-video/wireplumber/files/wireplumber-0.4.8-spa-json-fix-va-list-APIs-for-different-architecture.patch deleted file mode 100644 index b77cfa3c3c6f..000000000000 --- a/media-video/wireplumber/files/wireplumber-0.4.8-spa-json-fix-va-list-APIs-for-different-architecture.patch +++ /dev/null @@ -1,214 +0,0 @@ -https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/e429db7e8c266045aee25e153fb2308bd61fe233 - -From e429db7e8c266045aee25e153fb2308bd61fe233 Mon Sep 17 00:00:00 2001 -From: Julian Bouzas -Date: Wed, 9 Feb 2022 07:59:59 -0500 -Subject: [PATCH] spa-json: fix va_list APIs for different architectures - -The va_list type might not always be a pointer in some architectures, so we -cannot guarantee it will be modified after using it for a second time in another -function. This fixes the issue by using macros so args does not get copied, and -always gets modified when using it more than once. ---- - lib/wp/spa-json.c | 156 ++++++++++++++++++++++++---------------------- - 1 file changed, 80 insertions(+), 76 deletions(-) - -diff --git a/lib/wp/spa-json.c b/lib/wp/spa-json.c -index f14f395d..c5e59a3e 100644 ---- a/lib/wp/spa-json.c -+++ b/lib/wp/spa-json.c -@@ -363,33 +363,33 @@ wp_spa_json_new_string (const gchar *value) - wp_spa_json_builder_new_formatted ("\"%s\"", value)); - } - --static void --wp_spa_json_builder_add_value (WpSpaJsonBuilder *self, const gchar *fmt, -- va_list args) --{ -- switch (*fmt) { -- case 'n': -- wp_spa_json_builder_add_null (self); -- break; -- case 'b': -- wp_spa_json_builder_add_boolean (self, va_arg(args, gboolean)); -- break; -- case 'i': -- wp_spa_json_builder_add_int (self, va_arg(args, gint)); -- break; -- case 'f': -- wp_spa_json_builder_add_float (self, (float)va_arg(args, double)); -- break; -- case 's': -- wp_spa_json_builder_add_string (self, va_arg(args, const gchar *)); -- break; -- case 'J': -- wp_spa_json_builder_add_json (self, va_arg(args, WpSpaJson *)); -- break; -- default: -- return; -- } --} -+/* Args is not a pointer in some architectures, so this needs to be a macro to -+ * avoid args being copied */ -+#define wp_spa_json_builder_add_value(self,fmt,args) \ -+do { \ -+ switch (*fmt) { \ -+ case 'n': \ -+ wp_spa_json_builder_add_null (self); \ -+ break; \ -+ case 'b': \ -+ wp_spa_json_builder_add_boolean (self, va_arg(args, gboolean)); \ -+ break; \ -+ case 'i': \ -+ wp_spa_json_builder_add_int (self, va_arg(args, gint)); \ -+ break; \ -+ case 'f': \ -+ wp_spa_json_builder_add_float (self, (float)va_arg(args, double)); \ -+ break; \ -+ case 's': \ -+ wp_spa_json_builder_add_string (self, va_arg(args, const gchar *)); \ -+ break; \ -+ case 'J': \ -+ wp_spa_json_builder_add_json (self, va_arg(args, WpSpaJson *)); \ -+ break; \ -+ default: \ -+ break; \ -+ } \ -+} while(false) - - /*! - * \brief Creates a spa json of type array -@@ -724,48 +724,46 @@ wp_spa_json_parse_object_valist (WpSpaJson *self, va_list args) - return res; - } - --static gboolean --wp_spa_json_parse_value (const gchar *data, int len, const gchar *fmt, -- va_list args) --{ -- switch (*fmt) { -- case 'n': -- if (!spa_json_is_null (data, len)) -- return FALSE; -- break; -- case 'b': -- if (!wp_spa_json_parse_boolean_internal (data, len, -- va_arg(args, gboolean *))) -- return FALSE; -- break; -- case 'i': -- if (spa_json_parse_int (data, len, va_arg(args, gint *)) < 0) -- return FALSE; -- break; -- case 'f': -- if (spa_json_parse_float (data, len, -- (float *)va_arg(args, double *)) < 0) -- return FALSE; -- break; -- case 's': { -- gchar *str = wp_spa_json_parse_string_internal (data, len); -- if (!str) -- return FALSE; -- *va_arg(args, gchar **) = str; -- break; -- } -- case 'J': { -- WpSpaJson *j = wp_spa_json_new (data, len); -- if (!j) -- return FALSE; -- *va_arg(args, WpSpaJson **) = j; -- break; -- } -- default: -- return FALSE; -- } -- return TRUE; --} -+/* Args is not a pointer in some architectures, so this needs to be a macro to -+ * avoid args being copied */ -+#define wp_spa_json_parse_value(data,len,fmt,args) \ -+do { \ -+ switch (*fmt) { \ -+ case 'n': \ -+ if (!spa_json_is_null (data, len)) \ -+ return FALSE; \ -+ break; \ -+ case 'b': \ -+ if (!wp_spa_json_parse_boolean_internal (data, len, \ -+ va_arg(args, gboolean *))) \ -+ return FALSE; \ -+ break; \ -+ case 'i': \ -+ if (spa_json_parse_int (data, len, va_arg(args, gint *)) < 0) \ -+ return FALSE; \ -+ break; \ -+ case 'f': \ -+ if (spa_json_parse_float (data, len, va_arg(args, float *)) < 0) \ -+ return FALSE; \ -+ break; \ -+ case 's': { \ -+ gchar *str = wp_spa_json_parse_string_internal (data, len); \ -+ if (!str) \ -+ return FALSE; \ -+ *va_arg(args, gchar **) = str; \ -+ break; \ -+ } \ -+ case 'J': { \ -+ WpSpaJson *j = wp_spa_json_new (data, len); \ -+ if (!j) \ -+ return FALSE; \ -+ *va_arg(args, WpSpaJson **) = j; \ -+ break; \ -+ } \ -+ default: \ -+ return FALSE; \ -+ } \ -+} while(false) - - /*! - * \brief Parses the object property values of a spa json object -@@ -827,8 +825,7 @@ wp_spa_json_object_get_valist (WpSpaJson *self, va_list args) - value = g_value_get_boxed (&item); - - if (g_strcmp0 (key_str, lookup_key) == 0) { -- if (!wp_spa_json_parse_value (value->data, value->size, lookup_fmt, args)) -- return FALSE; -+ wp_spa_json_parse_value (value->data, value->size, lookup_fmt, args); - lookup_key = va_arg(args, const gchar *); - if (!lookup_key) - return TRUE; -@@ -1366,9 +1363,12 @@ gboolean - wp_spa_json_parser_get_value (WpSpaJsonParser *self, const gchar *fmt, - va_list args) - { -- return wp_spa_json_parser_advance (self) && -- wp_spa_json_parse_value (self->curr.cur, -- self->curr.end - self->curr.cur, fmt, args); -+ if (wp_spa_json_parser_advance (self)) { -+ wp_spa_json_parse_value (self->curr.cur, self->curr.end - self->curr.cur, -+ fmt, args); -+ return TRUE; -+ } -+ return FALSE; - } - - /*! -@@ -1419,9 +1419,13 @@ wp_spa_json_parser_get_valist (WpSpaJsonParser *self, va_list args) - if (!format) - return TRUE; - -- /* parse value */ -- if (!wp_spa_json_parser_get_value (self, format, args)) -+ /* advance */ -+ if (!wp_spa_json_parser_advance (self)) - return FALSE; -+ -+ /* parse value */ -+ wp_spa_json_parse_value (self->curr.cur, self->curr.end - self->curr.cur, -+ format, args); - } while (TRUE); - - return FALSE; --- -GitLab - diff --git a/media-video/wireplumber/files/wireplumber-0.4.9-config-document-which-options-need-to-be-turned-off-.patch b/media-video/wireplumber/files/wireplumber-0.4.9-config-document-which-options-need-to-be-turned-off-.patch new file mode 100644 index 000000000000..9e664ec56564 --- /dev/null +++ b/media-video/wireplumber/files/wireplumber-0.4.9-config-document-which-options-need-to-be-turned-off-.patch @@ -0,0 +1,87 @@ +https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/0da29f38181e391160fa8702623050b8544ec775 + +From 0da29f38181e391160fa8702623050b8544ec775 Mon Sep 17 00:00:00 2001 +From: George Kiagiadakis +Date: Mon, 4 Apr 2022 14:38:28 +0300 +Subject: [PATCH] config: document which options need to be turned off to use + wp without D-Bus + +and actually implement an option for the logind module + +Related to: #237 +--- + src/config/bluetooth.lua.d/30-bluez-monitor.lua | 4 +++- + src/config/bluetooth.lua.d/50-bluez-config.lua | 8 ++++++++ + src/config/main.lua.d/50-alsa-config.lua | 4 +++- + src/config/main.lua.d/50-default-access-config.lua | 3 +++ + 4 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/src/config/bluetooth.lua.d/30-bluez-monitor.lua b/src/config/bluetooth.lua.d/30-bluez-monitor.lua +index 266d3e2f..ba86657f 100644 +--- a/src/config/bluetooth.lua.d/30-bluez-monitor.lua ++++ b/src/config/bluetooth.lua.d/30-bluez-monitor.lua +@@ -8,5 +8,7 @@ function bluez_monitor.enable() + rules = bluez_monitor.rules, + }) + +- load_optional_module("logind") ++ if bluez_monitor.properties["with-logind"] then ++ load_optional_module("logind") ++ end + end +diff --git a/src/config/bluetooth.lua.d/50-bluez-config.lua b/src/config/bluetooth.lua.d/50-bluez-config.lua +index 072504ec..dd8033ff 100644 +--- a/src/config/bluetooth.lua.d/50-bluez-config.lua ++++ b/src/config/bluetooth.lua.d/50-bluez-config.lua +@@ -34,6 +34,14 @@ bluez_monitor.properties = { + -- Register dummy AVRCP player, required for AVRCP volume function. + -- Disable if you are running mpris-proxy or equivalent. + --["bluez5.dummy-avrcp-player"] = true, ++ ++ -- Enable the logind module, which arbitrates which user will be allowed ++ -- to have bluetooth audio enabled at any given time (particularly useful ++ -- if you are using GDM as a display manager, as the gdm user also launches ++ -- pipewire and wireplumber). ++ -- This requires access to the D-Bus user session; disable if you are running ++ -- a system-wide instance of wireplumber. ++ ["with-logind"] = true, + } + + bluez_monitor.rules = { +diff --git a/src/config/main.lua.d/50-alsa-config.lua b/src/config/main.lua.d/50-alsa-config.lua +index 6c97e8ad..d29b0b6f 100644 +--- a/src/config/main.lua.d/50-alsa-config.lua ++++ b/src/config/main.lua.d/50-alsa-config.lua +@@ -7,6 +7,8 @@ alsa_monitor.properties = { + --["alsa.jack-device"] = false, + + -- Reserve devices via org.freedesktop.ReserveDevice1 on D-Bus ++ -- Disable if you are running a system-wide instance, which ++ -- doesn't have access to the D-Bus user session + ["alsa.reserve"] = true, + --["alsa.reserve.priority"] = -20, + --["alsa.reserve.application-name"] = "WirePlumber", +@@ -20,7 +22,7 @@ alsa_monitor.properties = { + + alsa_monitor.rules = { + -- An array of matches/actions to evaluate. +- -- ++ -- + -- If you want to disable some devices or nodes, you can apply properties per device as the following example. + -- The name can be found by running pw-cli ls Device, or pw-cli dump Device + --{ +diff --git a/src/config/main.lua.d/50-default-access-config.lua b/src/config/main.lua.d/50-default-access-config.lua +index 6cf18bed..45cc5b73 100644 +--- a/src/config/main.lua.d/50-default-access-config.lua ++++ b/src/config/main.lua.d/50-default-access-config.lua +@@ -1,4 +1,7 @@ + default_access.properties = { ++ -- Enable the use of the flatpak portal integration. ++ -- Disable if you are running a system-wide instance, which ++ -- doesn't have access to the D-Bus user session + ["enable-flatpak-portal"] = true, + } + +-- +GitLab + diff --git a/media-video/wireplumber/files/wireplumber-0.4.9-scripts-policy-device-profile-clear-tables-when-devi.patch b/media-video/wireplumber/files/wireplumber-0.4.9-scripts-policy-device-profile-clear-tables-when-devi.patch new file mode 100644 index 000000000000..4dc8e276fbfa --- /dev/null +++ b/media-video/wireplumber/files/wireplumber-0.4.9-scripts-policy-device-profile-clear-tables-when-devi.patch @@ -0,0 +1,33 @@ +https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/da5d25acbea5ae03336bd2b4ef2b0687b380978e + +From da5d25acbea5ae03336bd2b4ef2b0687b380978e Mon Sep 17 00:00:00 2001 +From: Pauli Virtanen +Date: Mon, 28 Mar 2022 20:16:52 +0300 +Subject: [PATCH] scripts: policy-device-profile: clear tables when devices + removed + +When device ids are invalidated, clear all local tables about them, +because the id may be reused by different object, or the same object +reappearing. +--- + src/scripts/policy-device-profile.lua | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/scripts/policy-device-profile.lua b/src/scripts/policy-device-profile.lua +index d0aa2696..9daeafaa 100644 +--- a/src/scripts/policy-device-profile.lua ++++ b/src/scripts/policy-device-profile.lua +@@ -229,4 +229,10 @@ self.om:connect("object-added", function (_, device) + handleProfiles (device, true) + end) + ++self.om:connect("object-removed", function (_, device) ++ local dev_id = device["bound-id"] ++ self.active_profiles[dev_id] = nil ++ self.best_profiles[dev_id] = nil ++end) ++ + self.om:activate() +-- +GitLab + -- cgit v1.2.3