diff options
author | Jaroslav Kysela <perex@perex.cz> | 2021-03-10 20:06:24 +0100 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2021-03-11 09:23:33 +0100 |
commit | eefc2c61cfda4325373e1fa2d3be1642c92eee83 (patch) | |
tree | 79f0a9df723d0b0f2b4f2984f24b94ff94d9cdd3 /alsactl/monitor.c | |
parent | 9a2115b5ccb53b0224bdc3bc965c1e6de7e82a2d (diff) | |
download | alsa-utils-eefc2c61cfda4325373e1fa2d3be1642c92eee83.tar.gz |
alsactl: use card iterator functions for all card loops
Take the card iterator idea from the monitor code and
use it for all card loops. It reduces the code duplications
and makes things easy to review.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'alsactl/monitor.c')
-rw-r--r-- | alsactl/monitor.c | 28 |
1 files changed, 3 insertions, 25 deletions
diff --git a/alsactl/monitor.c b/alsactl/monitor.c index fa6cd85..4c02557 100644 --- a/alsactl/monitor.c +++ b/alsactl/monitor.c @@ -28,11 +28,12 @@ #include <time.h> #include <signal.h> #include <sys/signalfd.h> -#include <alsa/asoundlib.h> #include <stddef.h> #include "list.h" +#include "alsactl.h" + struct src_entry { snd_ctl_t *handle; char *name; @@ -40,29 +41,6 @@ struct src_entry { struct list_head list; }; -struct snd_card_iterator { - int card; - char name[16]; -}; - -void snd_card_iterator_init(struct snd_card_iterator *iter) -{ - iter->card = -1; - memset(iter->name, 0, sizeof(iter->name)); -} - -static const char *snd_card_iterator_next(struct snd_card_iterator *iter) -{ - if (snd_card_next(&iter->card) < 0) - return NULL; - if (iter->card < 0) - return NULL; - - snprintf(iter->name, sizeof(iter->name), "hw:%d", iter->card); - - return (const char *)iter->name; -} - static void remove_source_entry(struct src_entry *entry) { list_del(&entry->list); @@ -159,7 +137,7 @@ static int prepare_source_entry(struct list_head *srcs, const char *name) struct snd_card_iterator iter; const char *cardname; - snd_card_iterator_init(&iter); + snd_card_iterator_init(&iter, -1); while ((cardname = snd_card_iterator_next(&iter))) { if (seek_entry_by_name(srcs, cardname)) continue; |