diff options
author | Clemens Ladisch <clemens@ladisch.de> | 2010-05-26 10:07:47 +0200 |
---|---|---|
committer | Clemens Ladisch <clemens@ladisch.de> | 2010-05-26 10:07:47 +0200 |
commit | e509df69a5100df28921980362488f6947df0aae (patch) | |
tree | fed1935b6d74c25bcde3535df765402a110295c8 /seq | |
parent | 1b22cb04888ede58a844baf89ede9104f9861b50 (diff) | |
download | alsa-utils-e509df69a5100df28921980362488f6947df0aae.tar.gz |
alsactl: use snd_config_imake* functions
To save a call to snd_config_set_xxx, replace the calls to
snd_config_make_xxx with snd_config_imake_xxx.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Diffstat (limited to 'seq')
-rw-r--r-- | seq/aconnect/aconnect.c | 49 |
1 files changed, 34 insertions, 15 deletions
diff --git a/seq/aconnect/aconnect.c b/seq/aconnect/aconnect.c index 8c66cfd..1a50666 100644 --- a/seq/aconnect/aconnect.c +++ b/seq/aconnect/aconnect.c @@ -192,33 +192,52 @@ static void remove_connection(snd_seq_t *seq, snd_seq_client_info_t *cinfo, snd_seq_port_info_t *pinfo, int count) { snd_seq_query_subscribe_t *query; - snd_seq_port_info_t *port; - snd_seq_port_subscribe_t *subs; snd_seq_query_subscribe_alloca(&query); snd_seq_query_subscribe_set_root(query, snd_seq_port_info_get_addr(pinfo)); + snd_seq_query_subscribe_set_type(query, SND_SEQ_QUERY_SUBS_READ); snd_seq_query_subscribe_set_index(query, 0); - - snd_seq_port_info_alloca(&port); - snd_seq_port_subscribe_alloca(&subs); - - while (snd_seq_query_port_subscribers(seq, query) >= 0) { + for (; snd_seq_query_port_subscribers(seq, query) >= 0; + snd_seq_query_subscribe_set_index(query, snd_seq_query_subscribe_get_index(query) + 1)) { + snd_seq_port_info_t *port; + snd_seq_port_subscribe_t *subs; const snd_seq_addr_t *sender = snd_seq_query_subscribe_get_root(query); const snd_seq_addr_t *dest = snd_seq_query_subscribe_get_addr(query); + snd_seq_port_info_alloca(&port); + if (snd_seq_get_any_port_info(seq, dest->client, dest->port, port) < 0) + continue; + if (!(snd_seq_port_info_get_capability(port) & SND_SEQ_PORT_CAP_SUBS_WRITE)) + continue; + if (snd_seq_port_info_get_capability(port) & SND_SEQ_PORT_CAP_NO_EXPORT) + continue; + snd_seq_port_subscribe_alloca(&subs); + snd_seq_port_subscribe_set_queue(subs, snd_seq_query_subscribe_get_queue(query)); + snd_seq_port_subscribe_set_sender(subs, sender); + snd_seq_port_subscribe_set_dest(subs, dest); + snd_seq_unsubscribe_port(seq, subs); + } - if (snd_seq_get_any_port_info(seq, dest->client, dest->port, port) < 0 || - !(snd_seq_port_info_get_capability(port) & SND_SEQ_PORT_CAP_SUBS_WRITE) || - (snd_seq_port_info_get_capability(port) & SND_SEQ_PORT_CAP_NO_EXPORT)) { - snd_seq_query_subscribe_set_index(query, snd_seq_query_subscribe_get_index(query) + 1); + snd_seq_query_subscribe_set_type(query, SND_SEQ_QUERY_SUBS_WRITE); + snd_seq_query_subscribe_set_index(query, 0); + for (; snd_seq_query_port_subscribers(seq, query) >= 0; + snd_seq_query_subscribe_set_index(query, snd_seq_query_subscribe_get_index(query) + 1)) { + snd_seq_port_info_t *port; + snd_seq_port_subscribe_t *subs; + const snd_seq_addr_t *dest = snd_seq_query_subscribe_get_root(query); + const snd_seq_addr_t *sender = snd_seq_query_subscribe_get_addr(query); + snd_seq_port_info_alloca(&port); + if (snd_seq_get_any_port_info(seq, sender->client, sender->port, port) < 0) continue; - } + if (!(snd_seq_port_info_get_capability(port) & SND_SEQ_PORT_CAP_SUBS_READ)) + continue; + if (snd_seq_port_info_get_capability(port) & SND_SEQ_PORT_CAP_NO_EXPORT) + continue; + snd_seq_port_subscribe_alloca(&subs); snd_seq_port_subscribe_set_queue(subs, snd_seq_query_subscribe_get_queue(query)); snd_seq_port_subscribe_set_sender(subs, sender); snd_seq_port_subscribe_set_dest(subs, dest); - if (snd_seq_unsubscribe_port(seq, subs) < 0) { - snd_seq_query_subscribe_set_index(query, snd_seq_query_subscribe_get_index(query) + 1); - } + snd_seq_unsubscribe_port(seq, subs); } } |