diff options
author | Takashi Sakamoto <o-takashi@sakamocchi.jp> | 2018-10-14 23:36:26 +0900 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2018-10-14 16:57:15 +0200 |
commit | 0ef92b4ee73ea75b2570c7c7644267af04f250d4 (patch) | |
tree | 77dcd0ae1550fa0fb0da2988d27a9bfbf8ec9944 /alsactl/monitor.c | |
parent | 71558a41b0b60016f393dfcaa423ce2743d6822f (diff) | |
download | alsa-utils-0ef92b4ee73ea75b2570c7c7644267af04f250d4.tar.gz |
alsactl: split event loop code to a function
In a mode of 'monitor', an event loop runs.
This commit applies a small refactoring to splits the loop into a
function for readability.
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'alsactl/monitor.c')
-rw-r--r-- | alsactl/monitor.c | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/alsactl/monitor.c b/alsactl/monitor.c index 8351a79..fb3fc18 100644 --- a/alsactl/monitor.c +++ b/alsactl/monitor.c @@ -84,6 +84,35 @@ static int print_event(int card, snd_ctl_t *ctl) return 0; } +static int run_dispatcher(snd_ctl_t **ctls, int ncards, int show_cards) +{ + int err = 0; + + for (;ncards > 0;) { + struct pollfd fds[ncards]; + int i; + + for (i = 0; i < ncards; i++) + snd_ctl_poll_descriptors(ctls[i], &fds[i], 1); + + err = poll(fds, ncards, -1); + if (err <= 0) { + err = 0; + break; + } + + for (i = 0; i < ncards; i++) { + unsigned short revents; + snd_ctl_poll_descriptors_revents(ctls[i], &fds[i], 1, + &revents); + if (revents & POLLIN) + print_event(show_cards ? i : -1, ctls[i]); + } + } + + return err; +} + #define MAX_CARDS 256 int monitor(const char *name) @@ -117,27 +146,7 @@ int monitor(const char *name) show_cards = 0; } - for (;ncards > 0;) { - struct pollfd fds[ncards]; - - for (i = 0; i < ncards; i++) - snd_ctl_poll_descriptors(ctls[i], &fds[i], 1); - - err = poll(fds, ncards, -1); - if (err <= 0) { - err = 0; - break; - } - - for (i = 0; i < ncards; i++) { - unsigned short revents; - snd_ctl_poll_descriptors_revents(ctls[i], &fds[i], 1, - &revents); - if (revents & POLLIN) - print_event(show_cards ? i : -1, ctls[i]); - } - } - + err = run_dispatcher(ctls, ncards, show_cards); error: for (i = 0; i < ncards; i++) snd_ctl_close(ctls[i]); |