event_pipe: added pipe_event enum and callbacks

Make the event_pipe (formerly main_notify) send/receive a set of
events, with a callback for each one.

The default event PIPE_EVENT_SIGNAL does not have a callback.  It
is still there for waking up the main thread, when it is waiting for
the player thread.
This commit is contained in:
Max Kellermann
2009-01-01 18:22:11 +01:00
parent 22bb5a5856
commit b3e2635ac1
8 changed files with 114 additions and 27 deletions

View File

@@ -90,7 +90,7 @@ static void player_stop_decoder(void)
{
dc_stop(&pc.notify);
pc.state = PLAYER_STATE_STOP;
event_pipe_signal();
event_pipe_emit(PIPE_EVENT_PLAYLIST);
}
static int player_wait_for_decoder(struct player *player)
@@ -369,7 +369,7 @@ static void do_play(void)
request the next song from the playlist */
pc.next_song = NULL;
event_pipe_signal();
event_pipe_emit(PIPE_EVENT_PLAYLIST);
}
if (decoder_is_idle() && player.queued) {
@@ -476,7 +476,7 @@ static void do_play(void)
if (player_wait_for_decoder(&player) < 0)
return;
event_pipe_signal();
event_pipe_emit(PIPE_EVENT_PLAYLIST);
} else if (decoder_is_idle()) {
break;
} else {