From 0e3be88b553913acb9f5f33545943b59eb4900648a4162ff6a536ce501d5318e Mon Sep 17 00:00:00 2001 From: Antonio Larrosa Date: Wed, 17 Apr 2024 07:12:24 +0000 Subject: [PATCH] Accepting request 1168470 from home:alarrosa:branches:multimedia:libs - Add patch from upstream to silence a warning on pipewire (since 1.0.5): * 0001-core-set-context.modules.allow-empty-to-silence-warning-in.patch - Add patch from upstream to fix a dangling reference to a device: * 0002-monitor-utils-clear-cam-data-after-creating-nodes.patch - Add patch from upstream to fix BAP node naming: * 0003-monitors_bluez-fix-BAP-device-set-node-naming.patch OBS-URL: https://build.opensuse.org/request/show/1168470 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=76 --- ...es.allow-empty-to-silence-warning-in.patch | 28 +++++++++++ ...-clear-cam-data-after-creating-nodes.patch | 47 +++++++++++++++++++ ...bluez-fix-BAP-device-set-node-naming.patch | 47 +++++++++++++++++++ wireplumber.changes | 11 +++++ wireplumber.spec | 3 ++ 5 files changed, 136 insertions(+) create mode 100644 0001-core-set-context.modules.allow-empty-to-silence-warning-in.patch create mode 100644 0002-monitor-utils-clear-cam-data-after-creating-nodes.patch create mode 100644 0003-monitors_bluez-fix-BAP-device-set-node-naming.patch diff --git a/0001-core-set-context.modules.allow-empty-to-silence-warning-in.patch b/0001-core-set-context.modules.allow-empty-to-silence-warning-in.patch new file mode 100644 index 0000000..4f3cc8c --- /dev/null +++ b/0001-core-set-context.modules.allow-empty-to-silence-warning-in.patch @@ -0,0 +1,28 @@ +From 7856124df0ebd28e259ce5b84b186cc4c859acd7 Mon Sep 17 00:00:00 2001 +From: George Kiagiadakis +Date: Wed, 3 Apr 2024 11:52:18 +0300 +Subject: [PATCH] core: set context.modules.allow-empty to silence warning in + pw_context + +See https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/cddea858d9e8894d777b1830d76db18e57791e29 + +Closes: #620 +--- + lib/wp/core.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/lib/wp/core.c b/lib/wp/core.c +index 9de0e69b..7e59447a 100644 +--- a/lib/wp/core.c ++++ b/lib/wp/core.c +@@ -330,6 +330,7 @@ wp_core_constructed (GObject *object) + + /* disable loading of a configuration file in pw_context */ + wp_properties_set (self->properties, PW_KEY_CONFIG_NAME, "null"); ++ wp_properties_set (self->properties, "context.modules.allow-empty", "true"); + } + + /* properties are fully stored in the pw_context, no need to keep a copy */ +-- +GitLab + diff --git a/0002-monitor-utils-clear-cam-data-after-creating-nodes.patch b/0002-monitor-utils-clear-cam-data-after-creating-nodes.patch new file mode 100644 index 0000000..b6e389d --- /dev/null +++ b/0002-monitor-utils-clear-cam-data-after-creating-nodes.patch @@ -0,0 +1,47 @@ +From 8ee351838dac5ac25224ca2a22bb1a55eace0291 Mon Sep 17 00:00:00 2001 +From: George Kiagiadakis +Date: Wed, 3 Apr 2024 11:32:35 +0300 +Subject: [PATCH] monitor-utils: clear cam data after creating nodes + +The cam_data structure stores a reference to the "parent" WpSpaDevice +and doesn't allow it to be destroyed when the monitor detects that +the device is no longer present. Clear it right after pushing the event +to make sure there's no dangling reference left around + +Fixes: #627 +--- + src/scripts/lib/monitor-utils.lua | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/src/scripts/lib/monitor-utils.lua b/src/scripts/lib/monitor-utils.lua +index 5c58cd68..c23ec1cd 100644 +--- a/src/scripts/lib/monitor-utils.lua ++++ b/src/scripts/lib/monitor-utils.lua +@@ -40,6 +40,15 @@ function mutils.get_cam_data (self, dev_string) + return self.cam_data[dev_num], dev_num + end + ++function mutils.clear_cam_data (self, dev_string) ++ local dev_num = tonumber (dev_string) ++ if not dev_num then ++ return ++ end ++ ++ self.cam_data[dev_num] = nil ++end ++ + function mutils.create_cam_node (self, dev_num) + local api = nil + local cam_data = self:get_cam_data (dev_num) +@@ -65,6 +74,8 @@ function mutils.create_cam_node (self, dev_num) + e:set_data ("node-sub-id", cam_data[api].id) + + EventDispatcher.push_event (e) ++ ++ self:clear_cam_data (dev_num) + end + + -- arbitrates between v4l2 and libcamera on who gets to create the device node +-- +GitLab + diff --git a/0003-monitors_bluez-fix-BAP-device-set-node-naming.patch b/0003-monitors_bluez-fix-BAP-device-set-node-naming.patch new file mode 100644 index 0000000..57ecf07 --- /dev/null +++ b/0003-monitors_bluez-fix-BAP-device-set-node-naming.patch @@ -0,0 +1,47 @@ +From 9d7c6b85d0d2f8e26298cbaf072491662a9d2702 Mon Sep 17 00:00:00 2001 +From: Pauli Virtanen +Date: Sat, 6 Apr 2024 21:59:16 +0300 +Subject: [PATCH] monitors/bluez: fix BAP device set node naming + +It is intended that its name is the actual device node name. +Fix this, as it was broken in some recent changes. +--- + src/scripts/monitors/bluez.lua | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/src/scripts/monitors/bluez.lua b/src/scripts/monitors/bluez.lua +index 336cd619..c3c00c60 100644 +--- a/src/scripts/monitors/bluez.lua ++++ b/src/scripts/monitors/bluez.lua +@@ -171,7 +171,6 @@ end) + + function createSetNode(parent, id, type, factory, properties) + local args = {} +- local name + local target_class + local stream_class + local rules = {} +@@ -181,12 +180,10 @@ function createSetNode(parent, id, type, factory, properties) + local channels = channels_json:parse () + + if properties["media.class"] == "Audio/Sink" then +- name = "bluez_output_internal" + args["combine.mode"] = "sink" + target_class = "Audio/Sink/Internal" + stream_class = "Stream/Output/Audio/Internal" + else +- name = "bluez_input_internal" + args["combine.mode"] = "source" + target_class = "Audio/Source/Internal" + stream_class = "Stream/Input/Audio/Internal" +@@ -214,7 +211,6 @@ function createSetNode(parent, id, type, factory, properties) + ) + end + +- properties["node.name"] = name + properties["node.virtual"] = false + properties["device.api"] = "bluez5" + properties["api.bluez5.set.members"] = nil +-- +GitLab + diff --git a/wireplumber.changes b/wireplumber.changes index 72614de..8f735dc 100644 --- a/wireplumber.changes +++ b/wireplumber.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Mon Apr 15 07:54:54 UTC 2024 - Antonio Larrosa + +- Add patch from upstream to silence a warning on pipewire + (since 1.0.5): + * 0001-core-set-context.modules.allow-empty-to-silence-warning-in.patch +- Add patch from upstream to fix a dangling reference to a device: + * 0002-monitor-utils-clear-cam-data-after-creating-nodes.patch +- Add patch from upstream to fix BAP node naming: + * 0003-monitors_bluez-fix-BAP-device-set-node-naming.patch + ------------------------------------------------------------------- Mon Apr 1 07:53:59 UTC 2024 - Antonio Larrosa diff --git a/wireplumber.spec b/wireplumber.spec index f7b63a5..dc3a7e3 100644 --- a/wireplumber.spec +++ b/wireplumber.spec @@ -30,6 +30,9 @@ Group: Development/Libraries/C and C++ URL: https://gitlab.freedesktop.org/pipewire/wireplumber Source0: wireplumber-%{version}.tar.xz Source1: split-config-file.py +Patch0: 0001-core-set-context.modules.allow-empty-to-silence-warning-in.patch +Patch1: 0002-monitor-utils-clear-cam-data-after-creating-nodes.patch +Patch2: 0003-monitors_bluez-fix-BAP-device-set-node-naming.patch # docs BuildRequires: doxygen BuildRequires: graphviz