summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHardeep Sidhu <dyp@pobox.com>2003-08-29 04:36:35 +0000
committerHardeep Sidhu <dyp@pobox.com>2003-08-29 04:36:35 +0000
commit4160b75456bc42adaa0857bf62fa89f01ba951d2 (patch)
tree6df5ae025d188425b59ba6c36b91b9470484977e
parent20ac4a281af78077ce56271e11d11e151fe9cd3e (diff)
downloadrockbox-4160b75456bc42adaa0857bf62fa89f01ba951d2.tar.gz
rockbox-4160b75456bc42adaa0857bf62fa89f01ba951d2.zip
Pass actual time instead of offset to mpeg_ff_rewind. Fixes ff/rew to wrong time when mpeg thread is busy loading data.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3943 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/wps.c4
-rw-r--r--firmware/export/mpeg.h2
-rw-r--r--firmware/mpeg.c8
3 files changed, 7 insertions, 7 deletions
diff --git a/apps/wps.c b/apps/wps.c
index ca1d80fe28..d41413c179 100644
--- a/apps/wps.c
+++ b/apps/wps.c
@@ -391,7 +391,7 @@ static bool ffwd_rew(int button)
391 391
392 case BUTTON_LEFT | BUTTON_REL: 392 case BUTTON_LEFT | BUTTON_REL:
393 case BUTTON_RIGHT | BUTTON_REL: 393 case BUTTON_RIGHT | BUTTON_REL:
394 mpeg_ff_rewind(ff_rewind_count); 394 mpeg_ff_rewind(id3->elapsed+ff_rewind_count);
395 ff_rewind_count = 0; 395 ff_rewind_count = 0;
396 ff_rewind = false; 396 ff_rewind = false;
397 if (paused) 397 if (paused)
@@ -855,7 +855,7 @@ int wps_show(void)
855 if (!paused) 855 if (!paused)
856 mpeg_pause(); 856 mpeg_pause();
857 857
858 mpeg_ff_rewind(-(id3->elapsed)); 858 mpeg_ff_rewind(0);
859 859
860 if (!paused) 860 if (!paused)
861 mpeg_resume(); 861 mpeg_resume();
diff --git a/firmware/export/mpeg.h b/firmware/export/mpeg.h
index 9f266bf9e5..bdf65dd7a8 100644
--- a/firmware/export/mpeg.h
+++ b/firmware/export/mpeg.h
@@ -67,7 +67,7 @@ void mpeg_pause(void);
67void mpeg_resume(void); 67void mpeg_resume(void);
68void mpeg_next(void); 68void mpeg_next(void);
69void mpeg_prev(void); 69void mpeg_prev(void);
70void mpeg_ff_rewind(int change); 70void mpeg_ff_rewind(int newtime);
71void mpeg_flush_and_reload_tracks(void); 71void mpeg_flush_and_reload_tracks(void);
72void mpeg_sound_set(int setting, int value); 72void mpeg_sound_set(int setting, int value);
73int mpeg_sound_min(int setting); 73int mpeg_sound_min(int setting);
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index ec5a8b3684..347e8ded21 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -1497,7 +1497,7 @@ static void mpeg_thread(void)
1497 case MPEG_FF_REWIND: { 1497 case MPEG_FF_REWIND: {
1498 struct mp3entry *id3 = mpeg_current_track(); 1498 struct mp3entry *id3 = mpeg_current_track();
1499 unsigned int oldtime = id3->elapsed; 1499 unsigned int oldtime = id3->elapsed;
1500 unsigned int newtime = oldtime + (int)ev.data; 1500 unsigned int newtime = (unsigned int)ev.data;
1501 int curpos, newpos, diffpos; 1501 int curpos, newpos, diffpos;
1502 DEBUGF("MPEG_FF_REWIND\n"); 1502 DEBUGF("MPEG_FF_REWIND\n");
1503 1503
@@ -2450,12 +2450,12 @@ void mpeg_prev(void)
2450#endif 2450#endif
2451} 2451}
2452 2452
2453void mpeg_ff_rewind(int change) 2453void mpeg_ff_rewind(int newtime)
2454{ 2454{
2455#ifndef SIMULATOR 2455#ifndef SIMULATOR
2456 queue_post(&mpeg_queue, MPEG_FF_REWIND, (void *)change); 2456 queue_post(&mpeg_queue, MPEG_FF_REWIND, (void *)newtime);
2457#else 2457#else
2458 (void)change; 2458 (void)newtime;
2459#endif 2459#endif
2460} 2460}
2461 2461