mirror of
https://github.com/Rockbox/rockbox.git
synced 2026-01-22 01:30:35 -05:00
plugin lrcplayer: Fix late rewinding at lrcplayer
If you try to rewind music at lrcplayer it 1. returns back to old time 2. play for some time (1-2 seconds) 3. only after that returns for new time According to wps code audio_pre_ff_rewind function should be called before any rewinding. It stops playback and automatically resumes it after audio_ff_rewind call Change-Id: Id3755bfe4deeb7cd5d889ad7d8e1dec45061fa5c
This commit is contained in:
parent
716f45e291
commit
19a49220b1
2 changed files with 12 additions and 22 deletions
|
|
@ -498,11 +498,7 @@ static void play_hop(int direction)
|
|||
{
|
||||
elapsed += step * direction;
|
||||
}
|
||||
if(audio_status() & AUDIO_STATUS_PLAY)
|
||||
{
|
||||
audio_pre_ff_rewind();
|
||||
}
|
||||
|
||||
audio_pre_ff_rewind();
|
||||
audio_ff_rewind(elapsed);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2526,20 +2526,10 @@ static bool check_audio_status(void)
|
|||
}
|
||||
return false;
|
||||
}
|
||||
static void ff_rewind(long time, bool resume)
|
||||
static void ff_rewind(long time)
|
||||
{
|
||||
if (AUDIO_PLAY)
|
||||
{
|
||||
if (!AUDIO_PAUSE)
|
||||
{
|
||||
resume = true;
|
||||
rb->audio_pause();
|
||||
}
|
||||
rb->audio_ff_rewind(time);
|
||||
rb->sleep(HZ/10); /* take affect seeking */
|
||||
if (resume)
|
||||
rb->audio_resume();
|
||||
}
|
||||
rb->audio_ff_rewind(time);
|
||||
rb->sleep(HZ/10); /* take effect seeking */
|
||||
}
|
||||
|
||||
static int handle_button(void)
|
||||
|
|
@ -2603,15 +2593,14 @@ static int handle_button(void)
|
|||
else
|
||||
{
|
||||
current.ff_rewind = current.elapsed;
|
||||
if (!AUDIO_PAUSE)
|
||||
rb->audio_pause();
|
||||
rb->audio_pre_ff_rewind();
|
||||
step = 1000 * rb->global_settings->ff_rewind_min_step;
|
||||
}
|
||||
break;
|
||||
case ACTION_WPS_STOPSEEK:
|
||||
if (current.ff_rewind == -1)
|
||||
break;
|
||||
ff_rewind(current.ff_rewind, !AUDIO_PAUSE);
|
||||
ff_rewind(current.ff_rewind);
|
||||
current.elapsed = current.ff_rewind;
|
||||
current.ff_rewind = -1;
|
||||
break;
|
||||
|
|
@ -2620,9 +2609,14 @@ static int handle_button(void)
|
|||
break;
|
||||
case ACTION_WPS_SKIPPREV:
|
||||
if (current.elapsed < 3000)
|
||||
{
|
||||
rb->audio_prev();
|
||||
}
|
||||
else
|
||||
ff_rewind(0, false);
|
||||
{
|
||||
rb->audio_pre_ff_rewind();
|
||||
ff_rewind(0);
|
||||
}
|
||||
break;
|
||||
case ACTION_WPS_VOLDOWN:
|
||||
rb->adjust_volume(-1);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue