summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-08-21 17:38:56 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-08-21 17:38:56 +0000
commit0c2e9f21e31422942001bf603f3d340b5a648136 (patch)
treef6ba531b33759edddfaa6c53ed2aa25379750b58
parent84cf9d446c68b577256c92b631d68bbeae6451b8 (diff)
downloadrockbox-0c2e9f21e31422942001bf603f3d340b5a648136.zip
rockbox-0c2e9f21e31422942001bf603f3d340b5a648136.tar.gz
rockbox-0c2e9f21e31422942001bf603f3d340b5a648136.tar.bz2
rockbox-0c2e9f21e31422942001bf603f3d340b5a648136.tar.xz
Stays in pause mode after seek
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1896 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/wps.c22
-rw-r--r--firmware/mpeg.c17
2 files changed, 27 insertions, 12 deletions
diff --git a/apps/wps.c b/apps/wps.c
index c14cbb4..8667ad9 100644
--- a/apps/wps.c
+++ b/apps/wps.c
@@ -597,7 +597,8 @@ int wps_show(void)
{
if ( mpeg_is_playing() && id3 && id3->length )
{
- mpeg_pause();
+ if (!paused)
+ mpeg_pause();
#ifdef HAVE_PLAYER_KEYPAD
lcd_stop_scroll();
#endif
@@ -629,7 +630,8 @@ int wps_show(void)
{
if ( mpeg_is_playing() && id3 && id3->length )
{
- mpeg_pause();
+ if (!paused)
+ mpeg_pause();
#ifdef HAVE_PLAYER_KEYPAD
lcd_stop_scroll();
#endif
@@ -664,8 +666,12 @@ int wps_show(void)
mpeg_ff_rewind(ff_rewind_count);
ff_rewind_count = 0;
ff_rewind = false;
- mpeg_resume();
- status_set_playmode(STATUS_PLAY);
+ if (paused)
+ status_set_playmode(STATUS_PAUSE);
+ else {
+ mpeg_resume();
+ status_set_playmode(STATUS_PLAY);
+ }
#ifdef HAVE_LCD_CHARCELLS
draw_screen(id3);
#endif
@@ -710,8 +716,12 @@ int wps_show(void)
mpeg_ff_rewind(ff_rewind_count);
ff_rewind_count = 0;
ff_rewind = false;
- mpeg_resume();
- status_set_playmode(STATUS_PLAY);
+ if (paused)
+ status_set_playmode(STATUS_PAUSE);
+ else {
+ mpeg_resume();
+ status_set_playmode(STATUS_PLAY);
+ }
#ifdef HAVE_LCD_CHARCELLS
draw_screen(id3);
#endif
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index 0c6a1a3..0117102 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -285,7 +285,6 @@ static bool playing = false;
static bool play_pending = false;
#else
static int last_dma_tick = 0;
-static int pause_tick = 0;
#ifdef HAVE_MAS3507D
@@ -683,6 +682,8 @@ static void track_change(void)
static void mpeg_thread(void)
{
+ static int pause_tick = 0;
+ static unsigned int pause_track = 0;
struct event ev;
int len;
int free_space_left;
@@ -760,6 +761,7 @@ static void mpeg_thread(void)
paused = true;
playing = false;
pause_tick = current_tick;
+ pause_track = current_track_counter;
stop_dma();
break;
@@ -769,10 +771,13 @@ static void mpeg_thread(void)
paused = false;
if (!play_pending)
{
- playing = true;
- last_dma_tick += current_tick - pause_tick;
- pause_tick = 0;
- start_dma();
+ playing = true;
+ if ( current_track_counter == pause_track )
+ last_dma_tick += current_tick - pause_tick;
+ else
+ last_dma_tick = current_tick;
+ pause_tick = 0;
+ start_dma();
}
break;
@@ -1276,7 +1281,7 @@ void mpeg_prev(void)
#else
char* file = playlist_next(-1,NULL);
mp3info(&taginfo, file);
- current_track_counter--;
+ current_track_counter++;
playing = true;
#endif
}