Busy wait loops are a bad thing, especially when the response time can be very long - busy waits eat a lot of CPU, and thus slow down the other thread. Since the other thread will notify us when it's ready, we can use notify_wait() instead. ---
src/decode.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/decode.c b/src/decode.c index 02f8064..551f40c 100644 --- a/src/decode.c +++ b/src/decode.c @@ -58,8 +58,10 @@ static void player_wakeup_decoder(void) static void dc_command_wait(void) { - while (dc.command != DECODE_COMMAND_NONE) + while (dc.command != DECODE_COMMAND_NONE) { player_wakeup_decoder_nb(); + notify_wait(&pc.notify); + } } static void dc_command(enum decoder_command cmd) @@ -112,8 +114,10 @@ static unsigned calculateCrossFadeChunks(AudioFormat * af, float totalTime) static int waitOnDecode(int *decodeWaitedOn) { - while (dc.command == DECODE_COMMAND_START) - player_wakeup_decoder(); + while (dc.command == DECODE_COMMAND_START) { + notify_signal(&dc.notify); + notify_wait(&pc.notify); + } if (dc.error != DECODE_ERROR_NOERROR) { pc.errored_song = dc.next_song; ------------------------------------------------------------------------- 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