invoke the notify API directly

Don't use wrappers like player_wakeup_decoder_nb().  These have been
wrappers calling notify.c functions, for compatibility with the
existing code when we migrated to notify.c.
This commit is contained in:
Max Kellermann 2008-08-26 08:27:04 +02:00
parent 87beded44f
commit 241cd043ca
5 changed files with 24 additions and 62 deletions

View File

@ -32,34 +32,10 @@ enum xfade_state {
XFADE_ENABLED = 1 XFADE_ENABLED = 1
}; };
/* called inside decoder_task (inputPlugins) */
void decoder_wakeup_player(void)
{
wakeup_player_nb();
}
void decoder_sleep(void)
{
notify_wait(&dc.notify);
wakeup_player_nb();
}
static void player_wakeup_decoder_nb(void)
{
notify_signal(&dc.notify);
}
/* called from player_task */
static void player_wakeup_decoder(void)
{
notify_signal(&dc.notify);
player_sleep();
}
static void dc_command_wait(void) static void dc_command_wait(void)
{ {
while (dc.command != DECODE_COMMAND_NONE) { while (dc.command != DECODE_COMMAND_NONE) {
player_wakeup_decoder_nb(); notify_signal(&dc.notify);
notify_wait(&pc.notify); notify_wait(&pc.notify);
} }
} }
@ -72,10 +48,10 @@ static void dc_command(enum decoder_command cmd)
void dc_command_finished(void) void dc_command_finished(void)
{ {
assert(dc.command != DECODE_COMMAND_NONE); assert(dc.command != DECODE_COMMAND_NONE);
dc.command = DECODE_COMMAND_NONE; dc.command = DECODE_COMMAND_NONE;
decoder_wakeup_player(); notify_signal(&pc.notify);
} }
static void stopDecode(void) static void stopDecode(void)
@ -354,9 +330,11 @@ static void * decoder_task(mpd_unused void *arg)
dc.command == DECODE_COMMAND_SEEK) { dc.command == DECODE_COMMAND_SEEK) {
decodeStart(); decodeStart();
} else if (dc.command == DECODE_COMMAND_STOP) { } else if (dc.command == DECODE_COMMAND_STOP) {
dc_command_finished(); dc.command = DECODE_COMMAND_NONE;
notify_signal(&pc.notify);
} else { } else {
decoder_sleep(); notify_wait(&dc.notify);
notify_signal(&pc.notify);
} }
} }
@ -445,7 +423,7 @@ static void decodeParent(void)
if (buffering) { if (buffering) {
if (ob_available() < bbp) { if (ob_available() < bbp) {
/* not enough decoded buffer space yet */ /* not enough decoded buffer space yet */
player_sleep(); notify_wait(&pc.notify);
continue; continue;
} else { } else {
/* buffering is complete */ /* buffering is complete */
@ -469,7 +447,8 @@ static void decodeParent(void)
break; break;
} }
player_wakeup_decoder(); notify_signal(&dc.notify);
notify_wait(&pc.notify);
if (do_pause) { if (do_pause) {
dropBufferedAudio(); dropBufferedAudio();
@ -490,7 +469,7 @@ static void decodeParent(void)
else { else {
/* the decoder is not yet ready; wait /* the decoder is not yet ready; wait
some more */ some more */
player_sleep(); notify_wait(&pc.notify);
continue; continue;
} }
} }
@ -506,7 +485,7 @@ static void decodeParent(void)
dc.command = DECODE_COMMAND_START; dc.command = DECODE_COMMAND_START;
pc.queueState = PLAYER_QUEUE_DECODE; pc.queueState = PLAYER_QUEUE_DECODE;
wakeup_main_task(); wakeup_main_task();
player_wakeup_decoder_nb(); notify_signal(&dc.notify);
} }
if (next >= 0 && do_xfade == XFADE_UNKNOWN && if (next >= 0 && do_xfade == XFADE_UNKNOWN &&
dc.command != DECODE_COMMAND_START && dc.command != DECODE_COMMAND_START &&
@ -527,7 +506,7 @@ static void decodeParent(void)
} }
if (do_pause) if (do_pause)
player_sleep(); notify_wait(&pc.notify);
else if (!ob_is_empty() && (int)ob.begin != next) { else if (!ob_is_empty() && (int)ob.begin != next) {
ob_chunk *beginChunk = ob_get_chunk(ob.begin); ob_chunk *beginChunk = ob_get_chunk(ob.begin);
unsigned int fadePosition; unsigned int fadePosition;
@ -563,7 +542,7 @@ static void decodeParent(void)
/* wait for the /* wait for the
decoder */ decoder */
ob_set_lazy(0); ob_set_lazy(0);
player_sleep(); notify_wait(&pc.notify);
continue; continue;
} }
} }
@ -574,7 +553,7 @@ static void decodeParent(void)
sizeToTime) < 0) sizeToTime) < 0)
break; break;
ob_shift(); ob_shift();
player_wakeup_decoder_nb(); notify_signal(&dc.notify);
} else if (!ob_is_empty() && (int)ob.begin == next) { } else if (!ob_is_empty() && (int)ob.begin == next) {
/* at the beginning of a new song */ /* at the beginning of a new song */
@ -590,7 +569,7 @@ static void decodeParent(void)
/* wait for the decoder to work on the new song */ /* wait for the decoder to work on the new song */
if (pc.queueState == PLAYER_QUEUE_DECODE || if (pc.queueState == PLAYER_QUEUE_DECODE ||
pc.queueLockState == PLAYER_QUEUE_LOCKED) { pc.queueLockState == PLAYER_QUEUE_LOCKED) {
player_sleep(); notify_wait(&pc.notify);
continue; continue;
} }
if (pc.queueState != PLAYER_QUEUE_PLAY) if (pc.queueState != PLAYER_QUEUE_PLAY)

View File

@ -61,10 +61,6 @@ typedef struct _DecoderControl {
void decode(void); void decode(void);
void decoder_wakeup_player(void);
void decoder_sleep(void);
void decoderInit(void); void decoderInit(void);
/** /**

View File

@ -73,7 +73,7 @@ static void output_buffer_expand(unsigned i)
/* if the buffer was empty, the player thread might be /* if the buffer was empty, the player thread might be
waiting for us; wake it up now that another decoded waiting for us; wake it up now that another decoded
buffer has become available. */ buffer has become available. */
decoder_wakeup_player(); notify_signal(&pc.notify);
} }
void ob_flush(void) void ob_flush(void)
@ -183,7 +183,8 @@ static int tailChunk(InputStream * inStream,
} }
} }
if (!inStream || bufferInputStream(inStream) <= 0) { if (!inStream || bufferInputStream(inStream) <= 0) {
decoder_sleep(); notify_wait(&dc.notify);
notify_signal(&pc.notify);
} }
} }

View File

@ -27,22 +27,12 @@
static void playerCloseAudio(void); static void playerCloseAudio(void);
void wakeup_player_nb(void)
{
notify_signal(&pc.notify);
}
static void wakeup_player(void) static void wakeup_player(void)
{ {
notify_signal(&pc.notify); notify_signal(&pc.notify);
wait_main_task(); wait_main_task();
} }
void player_sleep(void)
{
notify_wait(&pc.notify);
}
static void * player_task(mpd_unused void *arg) static void * player_task(mpd_unused void *arg)
{ {
notify_enter(&pc.notify); notify_enter(&pc.notify);
@ -67,7 +57,7 @@ static void * player_task(mpd_unused void *arg)
pc.queueLockState = PLAYER_QUEUE_UNLOCKED; pc.queueLockState = PLAYER_QUEUE_UNLOCKED;
pc.unlockQueue = 0; pc.unlockQueue = 0;
} else { } else {
player_sleep(); notify_wait(&pc.notify);
continue; continue;
} }
/* we did something, tell the main task about it */ /* we did something, tell the main task about it */
@ -112,7 +102,7 @@ int playerPlay(int fd, Song * song)
pc.play = 1; pc.play = 1;
/* FIXME: _nb() variant is probably wrong here, and everywhere... */ /* FIXME: _nb() variant is probably wrong here, and everywhere... */
do { wakeup_player_nb(); } while (pc.play); do { notify_signal(&pc.notify); } while (pc.play);
return 0; return 0;
} }
@ -249,7 +239,7 @@ int getPlayerQueueState(void)
void setQueueState(int queueState) void setQueueState(int queueState)
{ {
pc.queueState = queueState; pc.queueState = queueState;
wakeup_player_nb(); notify_signal(&pc.notify);
} }
void playerQueueLock(void) void playerQueueLock(void)
@ -285,7 +275,7 @@ int playerSeek(int fd, Song * song, float seek_time)
pc.seekWhere = seek_time; pc.seekWhere = seek_time;
pc.seek = 1; pc.seek = 1;
/* FIXME: _nb() is probably wrong here, too */ /* FIXME: _nb() is probably wrong here, too */
do { wakeup_player_nb(); } while (pc.seek); do { notify_signal(&pc.notify); } while (pc.seek);
} }
return 0; return 0;

View File

@ -76,10 +76,6 @@ typedef struct _PlayerControl {
volatile double totalPlayTime; volatile double totalPlayTime;
} PlayerControl; } PlayerControl;
void wakeup_player_nb(void);
void player_sleep(void);
int playerPlay(int fd, Song * song); int playerPlay(int fd, Song * song);
int playerSetPause(int fd, int pause_flag); int playerSetPause(int fd, int pause_flag);