diff options
author | Alexey Yakovenko <waker@users.sourceforge.net> | 2014-07-31 20:53:58 +0200 |
---|---|---|
committer | Alexey Yakovenko <waker@users.sourceforge.net> | 2014-07-31 20:53:58 +0200 |
commit | 092e8bed8b4c1ba931df108e5edc9393916ebae1 (patch) | |
tree | 51a6794a99d005f8f06980576c25f05198f412e9 | |
parent | 7193181e65e83b9add38f3aaa37b3d6793a41186 (diff) |
more responsive stop handler
-rw-r--r-- | handler.c | 2 | ||||
-rw-r--r-- | handler.h | 3 | ||||
-rw-r--r-- | streamer.c | 4 |
3 files changed, 8 insertions, 1 deletions
@@ -50,7 +50,7 @@ typedef struct handler_s { message_t pool[1]; } handler_t; -static void +void handler_reset (handler_t *h) { h->mqueue = NULL; h->mfree = NULL; @@ -33,6 +33,9 @@ struct handler_s * handler_alloc (int queue_size); void +handler_reset (struct handler_s *h); + +void handler_free (struct handler_s *h); int @@ -1359,6 +1359,10 @@ void streamer_set_nextsong (int song, int pstate) { // pthread_t tid = pthread_self (); // assert (tid != streamer_tid); + if (pstate == 0) { + // this is a stop query -- clear the queue + handler_reset (handler); + } streamer_abort_files (); handler_push (handler, STR_EV_PLAY_TRACK_IDX, 0, song, pstate); } |