]> git.tuebingen.mpg.de Git - paraslash.git/commitdiff
mixer: Improve sleep subcommand.
authorAndre Noll <maan@tuebingen.mpg.de>
Fri, 5 Jan 2018 15:11:36 +0000 (16:11 +0100)
committerAndre Noll <maan@tuebingen.mpg.de>
Sun, 8 Apr 2018 12:06:46 +0000 (14:06 +0200)
This avoids a pointless exec of "para_client stop" in case no fade-out
mood is given, and another pointless "para_client play" exec which
was executed when already playing.

Other than that behaviour should be identical.

mixer.c

diff --git a/mixer.c b/mixer.c
index 00af08a4e428b637dcb24ebc68545edb478ff61d..52af25f9c22ae5397f03c5bf61daaae0f1bb67bd 100644 (file)
--- a/mixer.c
+++ b/mixer.c
@@ -192,9 +192,6 @@ static void change_afs_mode(const char *afs_mode)
 {
        char *cmd;
 
-       client_cmd("stop");
-       if (!afs_mode)
-               return;
        cmd = make_message("select %s", afs_mode);
        client_cmd(cmd);
        free(cmd);
@@ -290,7 +287,7 @@ static int com_sleep(const struct mixer *m, struct mixer_handle *h)
        PARA_INFO_LOG("waketime: %d:%02d\n", tm->tm_hour, tm->tm_min);
        client_cmd("stop");
        sleep(1);
-       if (fot) {
+       if (fot && fo_mood) {
                ret = set_initial_volume(m, h);
                if (ret < 0)
                        return ret;
@@ -307,12 +304,13 @@ static int com_sleep(const struct mixer *m, struct mixer_handle *h)
                if (ret < 0)
                        return ret;
        }
-       if (OPT_GIVEN(SLEEP, SLEEP_MOOD)) {
+       if (sleep_mood) {
                change_afs_mode(sleep_mood);
-               client_cmd("play");
-       } else
+               if (!fot || !fo_mood) /* currently stopped */
+                       client_cmd("play");
+       } else if (fot && fo_mood) /* currently playing */
                client_cmd("stop");
-       if (!fit)
+       if (!fit || !fi_mood) /* nothing to do */
                return 1;
        change_afs_mode(fi_mood);
        for (;;) {