summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/playback.c14
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 @@
69static volatile bool audio_codec_loaded; 69static volatile bool audio_codec_loaded;
70static volatile bool voice_codec_loaded; 70static volatile bool voice_codec_loaded;
71static volatile bool playing; 71static volatile bool playing;
72static 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)
797static void yield_codecs(void) 796static 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)
1338static void audio_stop_playback(bool resume) 1337static 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
2206bool mp3_pause_done(void) 2203bool mp3_pause_done(void)
2207{ 2204{
2208 return paused; 2205 return pcm_is_paused();
2209} 2206}
2210 2207
2211void audio_pause(void) 2208void 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;