]> code.delx.au - pulseaudio/commitdiff
device-manager: Rather than flagging the device as available, just include the sink...
authorColin Guthrie <cguthrie@mandriva.org>
Sat, 10 Oct 2009 13:19:39 +0000 (14:19 +0100)
committerColin Guthrie <cguthrie@mandriva.org>
Sat, 10 Oct 2009 14:45:49 +0000 (15:45 +0100)
src/modules/module-device-manager.c
src/pulse/ext-device-manager.c
src/pulse/ext-device-manager.h

index bfcbfeaf7b492dfc901cc3aef22932c83ac19c0e..e31586447de719bc3e1d5470b98022dd646982c3 100644 (file)
@@ -1033,13 +1033,13 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio
         if ((e = read_entry(u, name))) {
             uint32_t idx;
             char *devname;
-            pa_bool_t available = FALSE;
+            uint32_t index = PA_INVALID_INDEX;
 
             if ((devname = get_name(name, "sink:"))) {
                 pa_sink* s;
                 PA_IDXSET_FOREACH(s, u->core->sinks, idx) {
                     if (strcmp(s->name, devname) == 0) {
-                        available = TRUE;
+                        index = s->index;
                         break;
                     }
                 }
@@ -1048,7 +1048,7 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio
                 pa_source* s;
                 PA_IDXSET_FOREACH(s, u->core->sources, idx) {
                     if (strcmp(s->name, devname) == 0) {
-                        available = TRUE;
+                        index = s->index;
                         break;
                     }
                 }
@@ -1058,7 +1058,7 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio
             pa_tagstruct_puts(reply, name);
             pa_tagstruct_puts(reply, e->description);
             pa_tagstruct_puts(reply, e->icon);
-            pa_tagstruct_put_boolean(reply, available);
+            pa_tagstruct_putu32(reply, index);
             pa_tagstruct_putu32(reply, NUM_ROLES);
 
             for (uint32_t i = ROLE_NONE; i < NUM_ROLES; ++i) {
index 138ed838dca9cbc151df1c2bf3df73f7a9c63f85..57cb57c879848934e9eca6222b8341229e1c1c5e 100644 (file)
@@ -128,21 +128,18 @@ static void ext_device_manager_read_cb(pa_pdispatch *pd, uint32_t command, uint3
 
         while (!pa_tagstruct_eof(t)) {
             pa_ext_device_manager_info i;
-            pa_bool_t available;
 
             memset(&i, 0, sizeof(i));
-            available = FALSE;
 
             if (pa_tagstruct_gets(t, &i.name) < 0 ||
                 pa_tagstruct_gets(t, &i.description) < 0 ||
                 pa_tagstruct_gets(t, &i.icon) < 0 ||
-                pa_tagstruct_get_boolean(t, &available) < 0 ||
+                pa_tagstruct_getu32(t, &i.index) < 0 ||
                 pa_tagstruct_getu32(t, &i.n_role_priorities) < 0) {
 
                 pa_context_fail(o->context, PA_ERR_PROTOCOL);
                 goto finish;
             }
-            i.available = (uint8_t)available;
 
             if (i.n_role_priorities > 0) {
                 uint32_t j;
index 13538f0ce38469f4b04f9c66d7b6e938841a69d7..1442a1a9e94fa2fa7cccd65ef7c46db3f2143216 100644 (file)
@@ -44,7 +44,7 @@ typedef struct pa_ext_device_manager_info {
     const char *name;            /**< Identifier string of the device. A string like "sink:" or similar followed by the name of the device. */
     const char *description;     /**< The description of the device when it was last seen, if applicable and saved */
     const char *icon;            /**< The icon given to the device */
-    uint8_t available;           /**< Is the device currently available? */
+    uint32_t index;              /**< The device index if it is currently available or PA_INVALID_INDEX */
     uint32_t n_role_priorities;  /**< How many role priorities do we have? */
     pa_ext_device_manager_role_priority_info *role_priorities; /**< An array of role priority structures or NULL */
 } pa_ext_device_manager_info;