SHA256
1
0
forked from pool/wireplumber
wireplumber/0001-m-reserve-device-replace-the-hash-table-key-on-new-insert.patch
Antonio Larrosa 16613e5370 Accepting request 933504 from home:alarrosa:branches:multimedia:libs
- Add patches from upstream to fix wireplumber breaking when
  udevadm trigger is run:
  * 0001-m-reserve-device-replace-the-hash-table-key-on-new-insert.patch
- And another patch to fix an issue where there is only 1 sink
  available and the card profile is toggeled between pro and
  stereo:
  * 0002-policy-node-wait-for-nodes-when-we-become-unlinked.patch

OBS-URL: https://build.opensuse.org/request/show/933504
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=9
2021-11-24 16:19:21 +00:00

47 lines
1.6 KiB
Diff

From f4546a18e871537be698916178b40091a4a0b377 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri, 12 Nov 2021 11:19:54 +1000
Subject: [PATCH] m-reserve-device: replace the hash table key on new insert
We're using the WpReserveDevice's name as key in the hash table, so we
must update the key as well when we replace an item in the hashtable -
the old device (and its name) will be released.
The side-effect of this is that the *third* device with an identical
name will no longer replace the previous device. This results in the
following sequence:
- dev1 added: name Audio0
- dev1 requests name owner Audio0
- dev2 added: name Audio0
- replace dev1 in the hashtable
- dev1 emits "release" signal
- dev1 unowns the Audio0 name
- dev2 requests name owner Audio0
- dev3 added: name Audio0
- adds to the hashtable because the existing key is now undefined
- dev3 requests name owner Audio0
- error, you cannot request ownership for the same name twice
Fixes #93
---
modules/module-reserve-device/plugin.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules/module-reserve-device/plugin.c b/modules/module-reserve-device/plugin.c
index d8e4e092..68df6ee8 100644
--- a/modules/module-reserve-device/plugin.c
+++ b/modules/module-reserve-device/plugin.c
@@ -221,7 +221,7 @@ wp_reserve_device_plugin_create_reservation (WpReserveDevicePlugin *self,
NULL);
/* use rd->name to avoid copying @em name again */
- g_hash_table_insert (self->reserve_devices, rd->name, rd);
+ g_hash_table_replace (self->reserve_devices, rd->name, rd);
return g_object_ref (rd);
}
--
GitLab