]> git.alsa-project.org Git - alsa-utils.git/commitdiff
alsactl: split event loop code to a function
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Sun, 14 Oct 2018 14:36:26 +0000 (23:36 +0900)
committerJaroslav Kysela <perex@perex.cz>
Sun, 14 Oct 2018 14:57:15 +0000 (16:57 +0200)
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>
alsactl/monitor.c

index 8351a795592be05af512bf125672462e8fdb8b00..fb3fc18ad7163bbfd911a4287f37e17b657496d9 100644 (file)
@@ -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]);