player_thread: pass format to audio_output_all_open() after resume

When playback is unpaused, pass the audio_format to
audio_output_all_open().  Don't assume that output_all.c remembers the
previous audio format.  Also check if there has been an audio format
yet.
This commit is contained in:
Max Kellermann 2009-03-10 21:00:52 +01:00
parent a790b64568
commit d3eccb2324
1 changed files with 13 additions and 9 deletions

View File

@ -333,17 +333,21 @@ static void player_process_command(struct player *player)
if (player->paused) {
audio_output_all_pause();
pc.state = PLAYER_STATE_PAUSE;
} else {
if (audio_output_all_open(NULL, player_buffer)) {
pc.state = PLAYER_STATE_PLAY;
} else {
assert(dc.next_song == NULL || dc.next_song->url != NULL);
pc.errored_song = dc.next_song;
pc.error = PLAYER_ERROR_AUDIO;
} else if (!audio_format_defined(&player->play_audio_format)) {
/* the decoder hasn't provided an audio format
yet - don't open the audio device yet */
player->paused = true;
}
pc.state = PLAYER_STATE_PLAY;
} else if (audio_output_all_open(&player->play_audio_format, player_buffer)) {
pc.state = PLAYER_STATE_PLAY;
} else {
assert(dc.next_song == NULL || dc.next_song->url != NULL);
pc.errored_song = dc.next_song;
pc.error = PLAYER_ERROR_AUDIO;
player->paused = true;
}
player_command_finished();
break;