summaryrefslogtreecommitdiff
path: root/seq
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2010-05-26 10:07:47 +0200
committerClemens Ladisch <clemens@ladisch.de>2010-05-26 10:07:47 +0200
commite509df69a5100df28921980362488f6947df0aae (patch)
treefed1935b6d74c25bcde3535df765402a110295c8 /seq
parent1b22cb04888ede58a844baf89ede9104f9861b50 (diff)
downloadalsa-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.c49
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);
}
}