summaryrefslogtreecommitdiff
path: root/alsactl/monitor.c
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2021-03-10 20:06:24 +0100
committerJaroslav Kysela <perex@perex.cz>2021-03-11 09:23:33 +0100
commiteefc2c61cfda4325373e1fa2d3be1642c92eee83 (patch)
tree79f0a9df723d0b0f2b4f2984f24b94ff94d9cdd3 /alsactl/monitor.c
parent9a2115b5ccb53b0224bdc3bc965c1e6de7e82a2d (diff)
downloadalsa-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.c28
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;