File 0003-alsa-lib-ucm-allow-values-to-be-read-from-devices.patch of Package alsa

From ae0a44c628423d8eaec64d119511815d6884ab6b Mon Sep 17 00:00:00 2001
From: Margarita Olaya <magi@slimlogic.co.uk>
Date: Fri, 18 Mar 2011 11:26:22 -0600
Subject: [PATCH 03/23] alsa-lib: ucm: allow values to be read from devices

This allows devices value to be read using the get_value().
Also fix a little formatting.

Signed-off-by: Margarita Olaya Cabrera <magi@slimlogic.co.uk>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 src/ucm/main.c |   21 ++++++++++++++-------
 1 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/src/ucm/main.c b/src/ucm/main.c
index 42fd373..88f8bf6 100644
--- a/src/ucm/main.c
+++ b/src/ucm/main.c
@@ -1059,24 +1059,31 @@ static int get_value3(const char **value,
  * \param uc_mgr Use case manager
  * \param identifier Value identifier (string)
  * \param value Returned value string
- * \param modifier modifier name (string)
+ * \param item Modifier or Device name (string)
  * \return Zero on success (value is filled), otherwise a negative error code
  */
 static int get_value(snd_use_case_mgr_t *uc_mgr,
-                     const char *identifier,
-                     const char **value,
-                     const char *modifier)
+			const char *identifier,
+			const char **value,
+			const char *item)
 {
-        struct use_case_modifier *mod;
+	struct use_case_modifier *mod;
+	struct use_case_device *dev;
 	int err;
 
-	if (modifier != NULL) {
-	        mod = find_modifier(uc_mgr, modifier);
+	if (item != NULL) {
+		mod = find_modifier(uc_mgr, item);
 		if (mod != NULL) {
 			err = get_value1(value, &mod->value_list, identifier);
 			if (err >= 0 || err != -ENOENT)
 				return err;
 		}
+		dev = find_device(uc_mgr->active_verb, item);
+		if (dev != NULL) {
+			err = get_value1(value, &dev->value_list, identifier);
+			if (err >= 0 || err != -ENOENT)
+				return err;
+		}
 	}
 	err = get_value1(value, &uc_mgr->active_verb->value_list, identifier);
 	if (err >= 0 || err != -ENOENT)
-- 
1.7.5.3

openSUSE Build Service is sponsored by