Accepting request 899941 from home:tiwai:branches:multimedia:libs
- Update to version 1.2.5.1: a bug fix release, including previous patches: https://www.alsa-project.org/wiki/Changes_v1.2.5_v1.2.5.1 - Drop obsoleted patches: 0001-conf-fix-load_for_all_cards.patch 0002-ucm-add-_alibpref-to-get-the-private-device-prefix.patch 0003-ucm-fix-_alibpref-string-add-.-delimiter-to-the-end.patch OBS-URL: https://build.opensuse.org/request/show/899941 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/alsa?expand=0&rev=299
This commit is contained in:
parent
d2f26b28a0
commit
49ea7cc947
@ -1,97 +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 f6c80031032e..d863dec637cf 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);
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,68 +0,0 @@
|
|||||||
From 0e4ba2ea8c0402f12a645032a14693eb9b1278e6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
Date: Wed, 2 Jun 2021 11:09:43 +0200
|
|
||||||
Subject: [PATCH] ucm: add _alibpref to get the private device prefix
|
|
||||||
|
|
||||||
It may be useful to get the device prefix for the local configuration.
|
|
||||||
|
|
||||||
Link: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1251
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
include/use-case.h | 1 +
|
|
||||||
src/ucm/main.c | 21 +++++++++++++++++++++
|
|
||||||
2 files changed, 22 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/include/use-case.h b/include/use-case.h
|
|
||||||
index ec1a97b01e71..7890358b8d8f 100644
|
|
||||||
--- a/include/use-case.h
|
|
||||||
+++ b/include/use-case.h
|
|
||||||
@@ -258,6 +258,7 @@ int snd_use_case_get_list(snd_use_case_mgr_t *uc_mgr,
|
|
||||||
* - _verb - return current verb
|
|
||||||
* - _file - return configuration file loaded for current card
|
|
||||||
* - _alibcfg - return private alsa-lib's configuration for current card
|
|
||||||
+ * - _alibpref - return private alsa-lib's configuration device prefix for current card
|
|
||||||
*
|
|
||||||
* - [=]{NAME}[/[{modifier}|{/device}][/{verb}]]
|
|
||||||
* - value identifier {NAME}
|
|
||||||
diff --git a/src/ucm/main.c b/src/ucm/main.c
|
|
||||||
index 361952f62830..3c9ea15d5642 100644
|
|
||||||
--- a/src/ucm/main.c
|
|
||||||
+++ b/src/ucm/main.c
|
|
||||||
@@ -2138,6 +2138,25 @@ static int get_alibcfg(snd_use_case_mgr_t *uc_mgr, char **str)
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+/**
|
|
||||||
+ * \brief Get device prefix for private alsa-lib configuration
|
|
||||||
+ * \param uc_mgr Use case manager
|
|
||||||
+ * \param str Returned value string
|
|
||||||
+ * \return Zero on success (value is filled), otherwise a negative error code
|
|
||||||
+ */
|
|
||||||
+static int get_alibpref(snd_use_case_mgr_t *uc_mgr, char **str)
|
|
||||||
+{
|
|
||||||
+ const size_t l = 9;
|
|
||||||
+ char *s;
|
|
||||||
+
|
|
||||||
+ s = malloc(l);
|
|
||||||
+ if (s == NULL)
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+ snprintf(s, l, "_ucm%04X", uc_mgr->ucm_card_number);
|
|
||||||
+ *str = s;
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* \brief Get current - string
|
|
||||||
* \param uc_mgr Use case manager
|
|
||||||
@@ -2193,6 +2212,8 @@ int snd_use_case_get(snd_use_case_mgr_t *uc_mgr,
|
|
||||||
|
|
||||||
} else if (strcmp(identifier, "_alibcfg") == 0) {
|
|
||||||
err = get_alibcfg(uc_mgr, (char **)value);
|
|
||||||
+ } else if (strcmp(identifier, "_alibpref") == 0) {
|
|
||||||
+ err = get_alibpref(uc_mgr, (char **)value);
|
|
||||||
} else if (identifier[0] == '_') {
|
|
||||||
err = -ENOENT;
|
|
||||||
} else {
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
|||||||
From 9621d0bff2e60b43e329ffa5059ab19f2914ec14 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
Date: Wed, 2 Jun 2021 11:21:54 +0200
|
|
||||||
Subject: [PATCH] ucm: fix _alibpref string (add '.' delimiter to the end)
|
|
||||||
|
|
||||||
Fixes: 0e4ba2ea ("ucm: add _alibpref to get the private device prefix")
|
|
||||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
|
||||||
---
|
|
||||||
src/ucm/main.c | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/ucm/main.c b/src/ucm/main.c
|
|
||||||
index 3c9ea15d5642..c9b37b68b655 100644
|
|
||||||
--- a/src/ucm/main.c
|
|
||||||
+++ b/src/ucm/main.c
|
|
||||||
@@ -2146,13 +2146,13 @@ static int get_alibcfg(snd_use_case_mgr_t *uc_mgr, char **str)
|
|
||||||
*/
|
|
||||||
static int get_alibpref(snd_use_case_mgr_t *uc_mgr, char **str)
|
|
||||||
{
|
|
||||||
- const size_t l = 9;
|
|
||||||
+ const size_t l = 10;
|
|
||||||
char *s;
|
|
||||||
|
|
||||||
s = malloc(l);
|
|
||||||
if (s == NULL)
|
|
||||||
return -ENOMEM;
|
|
||||||
- snprintf(s, l, "_ucm%04X", uc_mgr->ucm_card_number);
|
|
||||||
+ snprintf(s, l, "_ucm%04X.", uc_mgr->ucm_card_number);
|
|
||||||
*str = s;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
3
alsa-lib-1.2.5.1.tar.bz2
Normal file
3
alsa-lib-1.2.5.1.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:628421d950cecaf234de3f899d520c0a6923313c964ad751ffac081df331438e
|
||||||
|
size 1069073
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:9092894a8c083b33acf8d6deb901b58f5d20d6da583789f814e8e46f2850ef18
|
|
||||||
size 1068496
|
|
11
alsa.changes
11
alsa.changes
@ -1,3 +1,14 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jun 14 14:58:05 CEST 2021 - tiwai@suse.de
|
||||||
|
|
||||||
|
- Update to version 1.2.5.1:
|
||||||
|
a bug fix release, including previous patches:
|
||||||
|
https://www.alsa-project.org/wiki/Changes_v1.2.5_v1.2.5.1
|
||||||
|
- Drop obsoleted patches:
|
||||||
|
0001-conf-fix-load_for_all_cards.patch
|
||||||
|
0002-ucm-add-_alibpref-to-get-the-private-device-prefix.patch
|
||||||
|
0003-ucm-fix-_alibpref-string-add-.-delimiter-to-the-end.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Jun 9 08:58:26 CEST 2021 - tiwai@suse.de
|
Wed Jun 9 08:58:26 CEST 2021 - tiwai@suse.de
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
Name: alsa
|
Name: alsa
|
||||||
Version: 1.2.5
|
Version: 1.2.5.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Advanced Linux Sound Architecture
|
Summary: Advanced Linux Sound Architecture
|
||||||
License: LGPL-2.1-or-later
|
License: LGPL-2.1-or-later
|
||||||
@ -52,9 +52,6 @@ Source30: all_notes_off
|
|||||||
Source31: all_notes_off.bin
|
Source31: all_notes_off.bin
|
||||||
Source32: all_notes_off.mid
|
Source32: all_notes_off.mid
|
||||||
Source34: alsa-init.sh
|
Source34: alsa-init.sh
|
||||||
Patch1: 0001-conf-fix-load_for_all_cards.patch
|
|
||||||
Patch2: 0002-ucm-add-_alibpref-to-get-the-private-device-prefix.patch
|
|
||||||
Patch3: 0003-ucm-fix-_alibpref-string-add-.-delimiter-to-the-end.patch
|
|
||||||
# rest suse fixes
|
# rest suse fixes
|
||||||
Patch101: alsa-lib-ignore-non-accessible-ALSA_CONFIG_PATH.patch
|
Patch101: alsa-lib-ignore-non-accessible-ALSA_CONFIG_PATH.patch
|
||||||
BuildRequires: doxygen
|
BuildRequires: doxygen
|
||||||
@ -143,9 +140,6 @@ This package contains the library for ALSA topology support.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n alsa-lib-%{version}
|
%setup -q -n alsa-lib-%{version}
|
||||||
%patch1 -p1
|
|
||||||
%patch2 -p1
|
|
||||||
%patch3 -p1
|
|
||||||
%patch101 -p1
|
%patch101 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
Loading…
x
Reference in New Issue
Block a user