From 43b2df5cfbeb2f6434557fb6af0ae07f34149f24 Mon Sep 17 00:00:00 2001 From: Alexey Yakovenko Date: Tue, 15 Jul 2014 22:35:28 +0200 Subject: streamer streamer_start_playback race condition (HACK) --- main.c | 3 +-- streamer.c | 4 ++++ streamer.h | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/main.c b/main.c index dbaed838..d2466c94 100644 --- a/main.c +++ b/main.c @@ -574,9 +574,8 @@ player_mainloop (void) { streamer_play_current_track (); break; case DB_EV_PLAY_NUM: - output->stop (); pl_playqueue_clear (); - streamer_set_nextsong (p1, 1); + streamer_set_nextsong (p1, 4); if (pl_get_order () == PLAYBACK_ORDER_SHUFFLE_ALBUMS) { int pl = streamer_get_current_playlist (); playlist_t *plt = plt_get_for_idx (pl); diff --git a/streamer.c b/streamer.c index e5175551..1dd01031 100644 --- a/streamer.c +++ b/streamer.c @@ -1326,6 +1326,10 @@ streamer_set_nextsong (int song, int pstate) { static void streamer_set_nextsong_real (int song, int pstate) { DB_output_t *output = plug_get_output (); + if (pstate == 4) { + pstate = 1; + output->stop (); + } trace ("streamer_set_nextsong %d %d\n", song, pstate); streamer_abort_files (); streamer_lock (); diff --git a/streamer.h b/streamer.h index 471357d7..7c3f00bb 100644 --- a/streamer.h +++ b/streamer.h @@ -66,6 +66,7 @@ streamer_unlock (void); // 1 switch to current (gui) playlist, play if not playing // 2 pause // 3 play if not playing, don't switch playlist +// 4 same as 1, but stops playback before proceeding void streamer_set_nextsong (int song, int pstate); -- cgit v1.2.3