diff options
author | Brandon Low <lostlogic@rockbox.org> | 2006-03-25 15:58:10 +0000 |
---|---|---|
committer | Brandon Low <lostlogic@rockbox.org> | 2006-03-25 15:58:10 +0000 |
commit | 09c09738ab1ddebdb506212191ece4824c1ef979 (patch) | |
tree | 47d47c597dd46092604f19c32acbaf8a4eed4781 | |
parent | f6bdfbdcd09648454373a376ce19b20a561bbdef (diff) | |
download | rockbox-09c09738ab1ddebdb506212191ece4824c1ef979.tar.gz rockbox-09c09738ab1ddebdb506212191ece4824c1ef979.zip |
Fix a problem where audio would stay paused after a stop and start of playback
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9248 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/playback.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/apps/playback.c b/apps/playback.c index bf6e5bc4be..00c4572720 100644 --- a/apps/playback.c +++ b/apps/playback.c | |||
@@ -69,7 +69,6 @@ | |||
69 | static volatile bool audio_codec_loaded; | 69 | static volatile bool audio_codec_loaded; |
70 | static volatile bool voice_codec_loaded; | 70 | static volatile bool voice_codec_loaded; |
71 | static volatile bool playing; | 71 | static volatile bool playing; |
72 | static volatile bool paused; | ||
73 | 72 | ||
74 | #define CODEC_VORBIS "/.rockbox/codecs/vorbis.codec" | 73 | #define CODEC_VORBIS "/.rockbox/codecs/vorbis.codec" |
75 | #define CODEC_MPA_L3 "/.rockbox/codecs/mpa.codec" | 74 | #define CODEC_MPA_L3 "/.rockbox/codecs/mpa.codec" |
@@ -797,7 +796,7 @@ static void pcmbuf_track_changed_callback(void) | |||
797 | static void yield_codecs(void) | 796 | static void yield_codecs(void) |
798 | { | 797 | { |
799 | yield(); | 798 | yield(); |
800 | if (!pcm_is_playing() && !paused) | 799 | if (!pcm_is_playing() && !pcm_is_paused()) |
801 | sleep(5); | 800 | sleep(5); |
802 | while ((pcmbuf_is_crossfade_active() || pcmbuf_is_lowdata()) | 801 | while ((pcmbuf_is_crossfade_active() || pcmbuf_is_lowdata()) |
803 | && !ci.stop_codec && playing && queue_empty(&audio_queue) | 802 | && !ci.stop_codec && playing && queue_empty(&audio_queue) |
@@ -1338,12 +1337,12 @@ static void stop_codec_flush(void) | |||
1338 | static void audio_stop_playback(bool resume) | 1337 | static void audio_stop_playback(bool resume) |
1339 | { | 1338 | { |
1340 | logf("stop_playback:%d", resume); | 1339 | logf("stop_playback:%d", resume); |
1341 | paused = false; | ||
1342 | if (playing) | 1340 | if (playing) |
1343 | playlist_update_resume_info(resume ? audio_current_track() : NULL); | 1341 | playlist_update_resume_info(resume ? audio_current_track() : NULL); |
1344 | playing = false; | 1342 | playing = false; |
1345 | filling = false; | 1343 | filling = false; |
1346 | stop_codec_flush(); | 1344 | stop_codec_flush(); |
1345 | pcmbuf_pause(false); | ||
1347 | if (current_fd >= 0) { | 1346 | if (current_fd >= 0) { |
1348 | close(current_fd); | 1347 | close(current_fd); |
1349 | current_fd = -1; | 1348 | current_fd = -1; |
@@ -1836,7 +1835,7 @@ void audio_thread(void) | |||
1836 | last_tick = current_tick; | 1835 | last_tick = current_tick; |
1837 | 1836 | ||
1838 | /* Do not start crossfading if audio is paused. */ | 1837 | /* Do not start crossfading if audio is paused. */ |
1839 | if (paused) | 1838 | if (pcm_is_paused()) |
1840 | pcmbuf_play_stop(); | 1839 | pcmbuf_play_stop(); |
1841 | 1840 | ||
1842 | #ifdef CONFIG_TUNER | 1841 | #ifdef CONFIG_TUNER |
@@ -1873,13 +1872,11 @@ void audio_thread(void) | |||
1873 | case Q_AUDIO_PAUSE: | 1872 | case Q_AUDIO_PAUSE: |
1874 | logf("audio_pause"); | 1873 | logf("audio_pause"); |
1875 | pcmbuf_pause(true); | 1874 | pcmbuf_pause(true); |
1876 | paused = true; | ||
1877 | break ; | 1875 | break ; |
1878 | 1876 | ||
1879 | case Q_AUDIO_RESUME: | 1877 | case Q_AUDIO_RESUME: |
1880 | logf("audio_resume"); | 1878 | logf("audio_resume"); |
1881 | pcmbuf_pause(false); | 1879 | pcmbuf_pause(false); |
1882 | paused = false; | ||
1883 | break ; | 1880 | break ; |
1884 | 1881 | ||
1885 | case Q_AUDIO_NEXT: | 1882 | case Q_AUDIO_NEXT: |
@@ -2205,7 +2202,7 @@ void audio_stop(void) | |||
2205 | 2202 | ||
2206 | bool mp3_pause_done(void) | 2203 | bool mp3_pause_done(void) |
2207 | { | 2204 | { |
2208 | return paused; | 2205 | return pcm_is_paused(); |
2209 | } | 2206 | } |
2210 | 2207 | ||
2211 | void audio_pause(void) | 2208 | void audio_pause(void) |
@@ -2293,7 +2290,7 @@ int audio_status(void) | |||
2293 | if (playing) | 2290 | if (playing) |
2294 | ret |= AUDIO_STATUS_PLAY; | 2291 | ret |= AUDIO_STATUS_PLAY; |
2295 | 2292 | ||
2296 | if (paused) | 2293 | if (pcm_is_paused()) |
2297 | ret |= AUDIO_STATUS_PAUSE; | 2294 | ret |= AUDIO_STATUS_PAUSE; |
2298 | 2295 | ||
2299 | return ret; | 2296 | return ret; |
@@ -2595,7 +2592,6 @@ void audio_preinit(void) | |||
2595 | playing = false; | 2592 | playing = false; |
2596 | audio_codec_loaded = false; | 2593 | audio_codec_loaded = false; |
2597 | voice_is_playing = false; | 2594 | voice_is_playing = false; |
2598 | paused = false; | ||
2599 | track_changed = false; | 2595 | track_changed = false; |
2600 | current_fd = -1; | 2596 | current_fd = -1; |
2601 | track_buffer_callback = NULL; | 2597 | track_buffer_callback = NULL; |