Changeset 99c2c69e in mainline for uspace/srv/audio/hound/hound.c
- Timestamp:
- 2013-09-13T00:36:30Z (11 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 67fbd5e
- Parents:
- 7f84430 (diff), 11d41be5 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/audio/hound/hound.c
r7f84430 r99c2c69e 47 47 #include "str_error.h" 48 48 49 #define FIND_BY_NAME(type) \50 do { \51 assert(list); \52 assert(name); \53 list_foreach(*list, it) { \54 audio_ ## type ## _t *dev = \55 audio_ ## type ## _list_instance(it); \56 if (str_cmp(name, dev->name) == 0) { \57 log_debug("%s with name '%s' is in the list", \58 #type, name); \59 return dev; \60 } \61 } \62 return NULL; \63 } while (0)64 65 49 /** 66 50 * Search devices by name. … … 68 52 * @return Pointer to the found device, NULL on failure. 69 53 */ 70 static audio_device_t * find_device_by_name(list_t *list, const char *name) 71 { 72 FIND_BY_NAME(device); 54 static audio_device_t *find_device_by_name(list_t *list, const char *name) 55 { 56 assert(list); 57 assert(name); 58 59 list_foreach(*list, link, audio_device_t, dev) { 60 if (str_cmp(name, dev->name) == 0) { 61 log_debug("device with name '%s' is in the list", 62 name); 63 return dev; 64 } 65 } 66 67 return NULL; 73 68 } 74 69 … … 78 73 * @return Pointer to the found source, NULL on failure. 79 74 */ 80 static audio_source_t * find_source_by_name(list_t *list, const char *name) 81 { 82 FIND_BY_NAME(source); 75 static audio_source_t *find_source_by_name(list_t *list, const char *name) 76 { 77 assert(list); 78 assert(name); 79 80 list_foreach(*list, link, audio_source_t, dev) { 81 if (str_cmp(name, dev->name) == 0) { 82 log_debug("source with name '%s' is in the list", 83 name); 84 return dev; 85 } 86 } 87 88 return NULL; 83 89 } 84 90 … … 88 94 * @return Pointer to the found sink, NULL on failure. 89 95 */ 90 static audio_sink_t * find_sink_by_name(list_t *list, const char *name) 91 { 92 FIND_BY_NAME(sink); 96 static audio_sink_t *find_sink_by_name(list_t *list, const char *name) 97 { 98 assert(list); 99 assert(name); 100 101 list_foreach(*list, link, audio_sink_t, dev) { 102 if (str_cmp(name, dev->name) == 0) { 103 log_debug("sink with name '%s' is in the list", 104 name); 105 return dev; 106 } 107 } 108 109 return NULL; 93 110 } 94 111 … … 111 128 log_warning("Removing sink '%s' while still connected.", sink->name); 112 129 while (!list_empty(&sink->connections)) { 113 connection_t *conn = 114 connection_from_sink_list(list_first(&sink->connections));130 connection_t *conn = list_get_instance( 131 list_first(&sink->connections), connection_t, sink_link); 115 132 list_remove(&conn->hound_link); 116 133 connection_destroy(conn); … … 128 145 static void hound_remove_source_internal(hound_t *hound, audio_source_t *source) 129 146 { 130 assert(hound);131 assert(source);132 147 log_verbose("Removing source '%s'.", source->name); 133 148 if (!list_empty(&source->connections)) 134 149 log_warning("Removing source '%s' while still connected.", source->name); 135 150 while (!list_empty(&source->connections)) { 136 connection_t *conn = 137 connection_from_source_list(list_first(&source->connections)); 138 assert(conn); 151 connection_t *conn = list_get_instance( 152 list_first(&source->connections), connection_t, source_link); 139 153 list_remove(&conn->hound_link); 140 154 connection_destroy(conn); … … 223 237 fibril_mutex_lock(&hound->list_guard); 224 238 hound_ctx_t *res = NULL; 225 list_foreach(hound->contexts, it) { 226 hound_ctx_t *ctx = hound_ctx_from_link(it); 239 list_foreach(hound->contexts, link, hound_ctx_t, ctx) { 227 240 if (hound_ctx_get_id(ctx) == id) { 228 241 res = ctx; … … 251 264 } 252 265 253 list_foreach(hound->devices, it) { 254 audio_device_t *dev = audio_device_list_instance(it); 266 list_foreach(hound->devices, link, audio_device_t, dev) { 255 267 if (dev->id == id) { 256 268 log_debug("Device with id %zu is already present", id);
Note:
See TracChangeset
for help on using the changeset viewer.