]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - afs.c
Force status item update on mood/playlist changes.
[paraslash.git] / afs.c
diff --git a/afs.c b/afs.c
index 59595567fcd6c7b4f7c66c49bfb2e3183cd73283..ef05a473e85a022568a785ecc8da140d2b19d1dc 100644 (file)
--- a/afs.c
+++ b/afs.c
@@ -482,7 +482,7 @@ static int activate_mood_or_playlist(const char *arg, int *num_admissible)
                        ret = change_current_mood(arg + 2);
                        mode = PLAY_MODE_MOOD;
                } else
-                       return -E_AFS_SYNTAX;
+                       return -ERRNO_TO_PARA_ERROR(EINVAL);
                if (ret < 0)
                        return ret;
        }
@@ -497,10 +497,12 @@ static int activate_mood_or_playlist(const char *arg, int *num_admissible)
                        strncpy(mmd->afs_mode_string, arg,
                                sizeof(mmd->afs_mode_string));
                        mmd->afs_mode_string[sizeof(mmd->afs_mode_string) - 1] = '\0';
+                       mmd->events++;
                        mutex_unlock(mmd_mutex);
                } else {
                        mutex_lock(mmd_mutex);
                        strcpy(mmd->afs_mode_string, "dummy");
+                       mmd->events++;
                        mutex_unlock(mmd_mutex);
                        current_mop = NULL;
                }
@@ -580,7 +582,7 @@ static int com_select_callback(struct afs_callback_arg *aca)
                goto out;
        /* ignore subsequent errors (but log them) */
        para_printf(&aca->pbout, "could not activate %s\n", arg);
-       if (current_mop) {
+       if (current_mop && strcmp(current_mop, arg) != 0) {
                int ret2;
                para_printf(&aca->pbout, "switching back to %s\n", current_mop);
                ret2 = activate_mood_or_playlist(current_mop, &num_admissible);
@@ -615,8 +617,13 @@ EXPORT_SERVER_CMD_HANDLER(select);
 
 static void init_admissible_files(const char *arg)
 {
-       if (activate_mood_or_playlist(arg, NULL) < 0)
+       int ret = activate_mood_or_playlist(arg, NULL);
+       if (ret < 0) {
+               assert(arg);
+               PARA_WARNING_LOG("could not activate %s: %s\n", arg,
+                       para_strerror(-ret));
                activate_mood_or_playlist(NULL, NULL); /* always successful */
+       }
 }
 
 static int setup_command_socket_or_die(void)