summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStepan Moskovchenko <stevenm@rockbox.org>2007-11-03 06:31:33 +0000
committerStepan Moskovchenko <stevenm@rockbox.org>2007-11-03 06:31:33 +0000
commit3be1ca028117344ac0967fbe9379793a891f36eb (patch)
treec149fe049a29ec8144b9a480762ec880f654cc5a
parent11a3661d73884f627c804fbcc0e5be820511cbfa (diff)
downloadrockbox-3be1ca028117344ac0967fbe9379793a891f36eb.tar.gz
rockbox-3be1ca028117344ac0967fbe9379793a891f36eb.zip
MIDI: Improve seeking (especially near the end of the file) by disabling playback during the seek. Next
step is to prevent delta value calculation during seeking, and just recompute the current deltas once seeking is over. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15426 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/plugins/midi/midiplay.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/apps/plugins/midi/midiplay.c b/apps/plugins/midi/midiplay.c
index e1710e8eac..c69c8b1ad6 100644
--- a/apps/plugins/midi/midiplay.c
+++ b/apps/plugins/midi/midiplay.c
@@ -316,6 +316,7 @@ static int midimain(void * filename)
316 { 316 {
317 /* Rewinding is tricky. Basically start the file over */ 317 /* Rewinding is tricky. Basically start the file over */
318 /* but run through the tracks without the synth running */ 318 /* but run through the tracks without the synth running */
319 rb->pcm_play_stop();
319 320
320 int desiredTime = playingTime - 5; /* Rewind 5 sec */ 321 int desiredTime = playingTime - 5; /* Rewind 5 sec */
321 322
@@ -357,6 +358,7 @@ static int midimain(void * filename)
357 while(playingTime < desiredTime) 358 while(playingTime < desiredTime)
358 tick(); 359 tick();
359 360
361 rb->pcm_play_data(&get_more, NULL, 0);
360 break; 362 break;
361 } 363 }
362 364
@@ -370,8 +372,12 @@ static int midimain(void * filename)
370 /* Have the issue where numberOfSamples changes within this tick */ 372 /* Have the issue where numberOfSamples changes within this tick */
371 int tickCount = samp / numberOfSamples; 373 int tickCount = samp / numberOfSamples;
372 int a=0; 374 int a=0;
375
376 rb->pcm_play_stop();
377
373 for(a=0; a<tickCount; a++) 378 for(a=0; a<tickCount; a++)
374 tick(); 379 tick();
380 rb->pcm_play_data(&get_more, NULL, 0);
375 break; 381 break;
376 } 382 }
377 383