playerWait() stops the player thread (twice!) and closes the output
device.  It should be well enough to just send CLOSE_AUDIO, without
STOP.

This requires a tiny change to the player thread code: make it break
when CLOSE_AUDIO is sent.
---

 src/player.c        |   22 ++++++++--------------
 src/player_thread.c |    3 ++-
 2 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/src/player.c b/src/player.c
index fae405a..5c33194 100644
--- a/src/player.c
+++ b/src/player.c
@@ -25,14 +25,6 @@
 #include "os_compat.h"
 #include "main_notify.h"
 
-static void playerCloseAudio(void);
-
-void playerWait(void)
-{
-       playerStop();
-       playerCloseAudio();
-}
-
 static void set_current_song(Song *song)
 {
        assert(song != NULL);
@@ -76,6 +68,14 @@ void playerStop(void)
        playerQueueUnlock();
 }
 
+void playerWait(void)
+{
+       player_command(PLAYER_COMMAND_CLOSE_AUDIO);
+
+       pc.queueState = PLAYER_QUEUE_BLANK;
+       playerQueueUnlock();
+}
+
 void playerKill(void) /* deprecated */
 {
        playerPause();
@@ -165,12 +165,6 @@ char *getPlayerErrorStr(void)
        return *error ? error : NULL;
 }
 
-static void playerCloseAudio(void)
-{
-       playerStop();
-       player_command(PLAYER_COMMAND_CLOSE_AUDIO);
-}
-
 int queueSong(Song * song)
 {
        if (pc.queueState == PLAYER_QUEUE_BLANK) {
diff --git a/src/player_thread.c b/src/player_thread.c
index 62badab..3784445 100644
--- a/src/player_thread.c
+++ b/src/player_thread.c
@@ -224,7 +224,8 @@ static void decodeParent(void)
        while (1) {
                processDecodeInput(&do_pause, &bbp, &do_xfade,
                                   &decodeWaitedOn, &next);
-               if (pc.command == PLAYER_COMMAND_STOP) {
+               if (pc.command == PLAYER_COMMAND_STOP ||
+                   pc.command == PLAYER_COMMAND_CLOSE_AUDIO) {
                        dropBufferedAudio();
                        break;
                }


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Musicpd-dev-team mailing list
Musicpd-dev-team@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/musicpd-dev-team

Reply via email to