]> git.alsa-project.org Git - alsa-lib.git/commitdiff
alsa-lib: ucm: allow values to be read from devices
authorMargarita Olaya <magi@slimlogic.co.uk>
Fri, 18 Mar 2011 17:26:22 +0000 (11:26 -0600)
committerTakashi Iwai <tiwai@suse.de>
Fri, 18 Mar 2011 17:28:07 +0000 (18:28 +0100)
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

index 42fd3733aab96038a3035d44815c738d9a04fc39..88f8bf6820a82b82eb810757dee2404cff898d79 100644 (file)
@@ -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)