diff options
author | Max Kellermann <max@duempel.org> | 2008-04-12 04:14:32 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2008-04-12 04:14:32 +0000 |
commit | 701cf6884ceb8a5a4791211258ce5d298d38e22f (patch) | |
tree | 3961c3ff3a05c34106e438ab851fe4e7d123fe16 /src/decode.c | |
parent | 0146fbe3ceab96759f1e55e73daaa6d6d7bc4b9b (diff) | |
download | mpd-701cf6884ceb8a5a4791211258ce5d298d38e22f.tar.gz mpd-701cf6884ceb8a5a4791211258ce5d298d38e22f.tar.xz mpd-701cf6884ceb8a5a4791211258ce5d298d38e22f.zip |
use the notify API in the decoder
git-svn-id: https://svn.musicpd.org/mpd/trunk@7281 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to 'src/decode.c')
-rw-r--r-- | src/decode.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/decode.c b/src/decode.c index 06c054e3b..d8534471a 100644 --- a/src/decode.c +++ b/src/decode.c @@ -30,9 +30,6 @@ #include "utf8.h" #include "os_compat.h" -static pthread_cond_t decoder_wakeup_cond = PTHREAD_COND_INITIALIZER; -static pthread_mutex_t decoder_wakeup_mutex = PTHREAD_MUTEX_INITIALIZER; - /* called inside decoder_task (inputPlugins) */ void decoder_wakeup_player(void) { @@ -41,19 +38,22 @@ void decoder_wakeup_player(void) void decoder_sleep(void) { - pthread_cond_wait(&decoder_wakeup_cond, &decoder_wakeup_mutex); + DecoderControl *dc = &(getPlayerData()->decoderControl); + notifyWait(&dc->notify); wakeup_player_nb(); } static void player_wakeup_decoder_nb(void) { - pthread_cond_signal(&decoder_wakeup_cond); + DecoderControl *dc = &(getPlayerData()->decoderControl); + notifySignal(&dc->notify); } /* called from player_task */ static void player_wakeup_decoder(void) { - pthread_cond_signal(&decoder_wakeup_cond); + DecoderControl *dc = &(getPlayerData()->decoderControl); + notifySignal(&dc->notify); player_sleep(); } @@ -332,6 +332,8 @@ static void * decoder_task(mpd_unused void *unused) PlayerControl *pc = &(getPlayerData()->playerControl); DecoderControl *dc = &(getPlayerData()->decoderControl); + notifyEnter(&dc->notify); + while (1) { if (dc->start || dc->seek) { decodeStart(pc, cb, dc); |