summaryrefslogtreecommitdiff
path: root/source/l/alsa-lib/ddfc32abf5697de1618b9e7ffdf57a0f97013090.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/l/alsa-lib/ddfc32abf5697de1618b9e7ffdf57a0f97013090.patch')
-rw-r--r--source/l/alsa-lib/ddfc32abf5697de1618b9e7ffdf57a0f97013090.patch94
1 files changed, 0 insertions, 94 deletions
diff --git a/source/l/alsa-lib/ddfc32abf5697de1618b9e7ffdf57a0f97013090.patch b/source/l/alsa-lib/ddfc32abf5697de1618b9e7ffdf57a0f97013090.patch
deleted file mode 100644
index 88ce8f50..00000000
--- a/source/l/alsa-lib/ddfc32abf5697de1618b9e7ffdf57a0f97013090.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From ddfc32abf5697de1618b9e7ffdf57a0f97013090 Mon Sep 17 00:00:00 2001
-From: Jaroslav Kysela <perex@perex.cz>
-Date: Wed, 2 Jun 2021 08:49:32 +0200
-Subject: [PATCH] conf: fix load_for_all_cards()
-
-The 63f7745b commit is loading the driver specific configuration
-multiple times which ends with the array merges (see the bug).
-
-Introduce the loaded compound which traces the already loaded
-driver configurations and skip the multiple load requests.
-
-Fixes: https://github.com/alsa-project/alsa-lib/issues/143
-Fixes: 63f7745b ("conf: extend load_for_all_cards hook (id/value table)")
-Signed-off-by: Jaroslav Kysela <perex@perex.cz>
----
- src/conf.c | 33 ++++++++++++++++++++++++++++-----
- 1 file changed, 28 insertions(+), 5 deletions(-)
-
-diff --git a/src/conf.c b/src/conf.c
-index f6c80031..d863dec6 100644
---- a/src/conf.c
-+++ b/src/conf.c
-@@ -4325,18 +4325,23 @@ static int _snd_config_hook_table(snd_config_t *root, snd_config_t *config, snd_
- int snd_config_hook_load_for_all_cards(snd_config_t *root, snd_config_t *config, snd_config_t **dst, snd_config_t *private_data ATTRIBUTE_UNUSED)
- {
- int card = -1, err;
-+ snd_config_t *loaded; // trace loaded cards
-
-+ err = snd_config_top(&loaded);
-+ if (err < 0)
-+ return err;
- do {
- err = snd_card_next(&card);
- if (err < 0)
-- return err;
-+ goto __fin_err;
- if (card >= 0) {
-- snd_config_t *n, *private_data = NULL;
-+ snd_config_t *n, *m, *private_data = NULL;
- const char *driver;
- char *fdriver = NULL;
-+ bool load;
- err = snd_determine_driver(card, &fdriver);
- if (err < 0)
-- return err;
-+ goto __fin_err;
- if (snd_config_search(root, fdriver, &n) >= 0) {
- if (snd_config_get_string(n, &driver) < 0) {
- if (snd_config_get_type(n) == SND_CONFIG_TYPE_COMPOUND) {
-@@ -4357,6 +4362,19 @@ int snd_config_hook_load_for_all_cards(snd_config_t *root, snd_config_t *config,
- driver = fdriver;
- }
- __std:
-+ load = true;
-+ err = snd_config_imake_integer(&m, driver, 1);
-+ if (err < 0)
-+ goto __err;
-+ err = snd_config_add(loaded, m);
-+ if (err < 0) {
-+ if (err == -EEXIST) {
-+ snd_config_delete(m);
-+ load = false;
-+ } else {
-+ goto __err;
-+ }
-+ }
- private_data = _snd_config_hook_private_data(card, driver);
- if (!private_data) {
- err = -ENOMEM;
-@@ -4365,17 +4383,22 @@ int snd_config_hook_load_for_all_cards(snd_config_t *root, snd_config_t *config,
- err = _snd_config_hook_table(root, config, private_data);
- if (err < 0)
- goto __err;
-- err = snd_config_hook_load(root, config, &n, private_data);
-+ if (load)
-+ err = snd_config_hook_load(root, config, &n, private_data);
- __err:
- if (private_data)
- snd_config_delete(private_data);
- free(fdriver);
- if (err < 0)
-- return err;
-+ goto __fin_err;
- }
- } while (card >= 0);
-+ snd_config_delete(loaded);
- *dst = NULL;
- return 0;
-+__fin_err:
-+ snd_config_delete(loaded);
-+ return err;
- }
- #ifndef DOC_HIDDEN
- SND_DLSYM_BUILD_VERSION(snd_config_hook_load_for_all_cards, SND_CONFIG_DLSYM_VERSION_HOOK);