diff options
author | Jens Arnold <amiconn@rockbox.org> | 2009-03-29 17:58:24 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2009-03-29 17:58:24 +0000 |
commit | ae61b94a3f48cf3f081e0a0baa06b0dbad4989cd (patch) | |
tree | bb344521298f73ee20dd3052f215873c605c5462 | |
parent | efef625b3fa535df9b2469f085cbe1894c5b0202 (diff) |
Fix the resume problems on hwcodec which were uncovered by r20483+r20485. The timing problem was there before; checking for id3 availability as a criterion whether to exit the wps was plain wrong. Now it exits only if playback actually finished.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20568 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/gui/gwps.c | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/apps/gui/gwps.c b/apps/gui/gwps.c index dd219f166f..631c9dec15 100644 --- a/apps/gui/gwps.c +++ b/apps/gui/gwps.c @@ -255,18 +255,11 @@ long gui_wps_show(void) { wps_state.id3 = audio_current_track(); wps_state.nid3 = audio_next_track(); - if (wps_state.id3) { - FOR_NB_SCREENS(i) - { - if (!gui_wps_display(&gui_wps[i])) - exit = true; - } - } + restore = true; /* force initial full redraw */ } - + while ( 1 ) { - yield(); bool audio_paused = (audio_status() & AUDIO_STATUS_PAUSE)?true:false; /* did someone else (i.e power thread) change audio pause mode? */ @@ -328,10 +321,9 @@ long gui_wps_show(void) button = get_action(CONTEXT_WPS|ALLOW_SOFTLOCK,HZ/5); } - /* Exit if audio has stopped playing. This can happen if using the - sleep timer with the charger plugged or if starting a recording - from F1 */ - if (!audio_status()) + /* Exit if audio has stopped playing. This happens e.g. at end of + playlist or if using the sleep timer. */ + if (!(audio_status() & AUDIO_STATUS_PLAY)) exit = true; /* The iPods/X5/M5 use a single button for the A-B mode markers, defined as ACTION_WPSAB_SINGLE in their config files. */ @@ -684,13 +676,12 @@ long gui_wps_show(void) { FOR_NB_SCREENS(i) { - if(!gui_wps_update(&gui_wps[i])) - exit = true; + gui_wps_update(&gui_wps[i]); } update_track = false; } - if (restore && + if (restore && wps_state.id3 && ((restoretimer == RESTORE_WPS_INSTANTLY) || TIME_AFTER(current_tick, restoretimer))) { @@ -699,8 +690,7 @@ long gui_wps_show(void) FOR_NB_SCREENS(i) { screens[i].stop_scroll(); - if (!gui_wps_display(&gui_wps[i])) - exit = true; + gui_wps_display(&gui_wps[i]); } } |