forked from len0rd/rockbox
Make sure we stop the playback the right way.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6987 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
d54811fe22
commit
9c70b1b562
1 changed files with 22 additions and 28 deletions
|
|
@ -1121,6 +1121,23 @@ void audio_update_trackinfo(void)
|
||||||
audiobuffer_add_event(codec_track_changed);
|
audiobuffer_add_event(codec_track_changed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void audio_stop_playback(void)
|
||||||
|
{
|
||||||
|
paused = false;
|
||||||
|
playing = false;
|
||||||
|
ci.stop_codec = true;
|
||||||
|
if (current_fd >= 0) {
|
||||||
|
close(current_fd);
|
||||||
|
current_fd = -1;
|
||||||
|
}
|
||||||
|
pcm_play_stop();
|
||||||
|
pcm_play_pause(true);
|
||||||
|
track_count = 0;
|
||||||
|
filling = true;
|
||||||
|
audio_clear_track_entries();
|
||||||
|
filling = false;
|
||||||
|
}
|
||||||
|
|
||||||
void audio_change_track(void)
|
void audio_change_track(void)
|
||||||
{
|
{
|
||||||
logf("change track");
|
logf("change track");
|
||||||
|
|
@ -1128,9 +1145,7 @@ void audio_change_track(void)
|
||||||
logf("No more tracks");
|
logf("No more tracks");
|
||||||
while (pcm_is_playing())
|
while (pcm_is_playing())
|
||||||
yield();
|
yield();
|
||||||
track_count = 0;
|
audio_stop_playback();
|
||||||
audio_clear_track_entries();
|
|
||||||
playing = false;
|
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1257,18 +1272,7 @@ void audio_thread(void)
|
||||||
break ;
|
break ;
|
||||||
|
|
||||||
case AUDIO_STOP:
|
case AUDIO_STOP:
|
||||||
paused = false;
|
audio_stop_playback();
|
||||||
filling = false;
|
|
||||||
playing = false;
|
|
||||||
ci.stop_codec = true;
|
|
||||||
if (current_fd >= 0) {
|
|
||||||
close(current_fd);
|
|
||||||
current_fd = -1;
|
|
||||||
}
|
|
||||||
pcm_play_stop();
|
|
||||||
pcm_play_pause(true);
|
|
||||||
track_count = 0;
|
|
||||||
audio_clear_track_entries();
|
|
||||||
break ;
|
break ;
|
||||||
|
|
||||||
case AUDIO_PAUSE:
|
case AUDIO_PAUSE:
|
||||||
|
|
@ -1296,14 +1300,8 @@ void audio_thread(void)
|
||||||
|
|
||||||
#ifndef SIMULATOR
|
#ifndef SIMULATOR
|
||||||
case SYS_USB_CONNECTED:
|
case SYS_USB_CONNECTED:
|
||||||
track_count = 0;
|
|
||||||
audio_clear_track_entries();
|
|
||||||
playing = false;
|
|
||||||
filling = false;
|
|
||||||
ci.stop_codec = true;
|
|
||||||
logf("USB Connection");
|
logf("USB Connection");
|
||||||
pcm_play_stop();
|
audio_stop_playback();
|
||||||
pcm_play_pause(true);
|
|
||||||
usb_acknowledge(SYS_USB_CONNECTED_ACK);
|
usb_acknowledge(SYS_USB_CONNECTED_ACK);
|
||||||
usb_wait_for_disconnect(&audio_queue);
|
usb_wait_for_disconnect(&audio_queue);
|
||||||
break ;
|
break ;
|
||||||
|
|
@ -1334,9 +1332,7 @@ void codec_thread(void)
|
||||||
codecsize = cur_ti->codecsize;
|
codecsize = cur_ti->codecsize;
|
||||||
if (codecsize == 0) {
|
if (codecsize == 0) {
|
||||||
logf("Codec slot is empty!");
|
logf("Codec slot is empty!");
|
||||||
track_count = 0;
|
audio_stop_playback();
|
||||||
audio_clear_track_entries();
|
|
||||||
playing = false;
|
|
||||||
break ;
|
break ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1363,9 +1359,7 @@ void codec_thread(void)
|
||||||
if (status != CODEC_OK) {
|
if (status != CODEC_OK) {
|
||||||
logf("Codec failure");
|
logf("Codec failure");
|
||||||
splash(HZ*2, true, "Codec failure");
|
splash(HZ*2, true, "Codec failure");
|
||||||
track_count = 0;
|
audio_stop_playback();
|
||||||
audio_clear_track_entries();
|
|
||||||
playing = false;
|
|
||||||
} else {
|
} else {
|
||||||
logf("Codec finished");
|
logf("Codec finished");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue