From 0ff2a6b434dec1a694f4cde64469ca19d97d9897 Mon Sep 17 00:00:00 2001 From: Colin Guthrie Date: Sat, 10 Oct 2009 14:19:39 +0100 Subject: [PATCH] device-manager: Rather than flagging the device as available, just include the sink/source index with PA_INVALID_INDEX meaning unavailable --- src/modules/module-device-manager.c | 8 ++++---- src/pulse/ext-device-manager.c | 5 +---- src/pulse/ext-device-manager.h | 2 +- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/modules/module-device-manager.c b/src/modules/module-device-manager.c index bfcbfea..e315864 100644 --- a/src/modules/module-device-manager.c +++ b/src/modules/module-device-manager.c @@ -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) { diff --git a/src/pulse/ext-device-manager.c b/src/pulse/ext-device-manager.c index 138ed83..57cb57c 100644 --- a/src/pulse/ext-device-manager.c +++ b/src/pulse/ext-device-manager.c @@ -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; diff --git a/src/pulse/ext-device-manager.h b/src/pulse/ext-device-manager.h index 13538f0..1442a1a 100644 --- a/src/pulse/ext-device-manager.h +++ b/src/pulse/ext-device-manager.h @@ -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; -- 2.7.4