forked from len0rd/rockbox
This makes seeking work for me
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9552 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
1aa57ddd26
commit
ab57025e33
1 changed files with 20 additions and 9 deletions
|
|
@ -94,7 +94,9 @@ enum {
|
||||||
Q_AUDIO_STOP,
|
Q_AUDIO_STOP,
|
||||||
Q_AUDIO_PAUSE,
|
Q_AUDIO_PAUSE,
|
||||||
Q_AUDIO_SKIP,
|
Q_AUDIO_SKIP,
|
||||||
|
Q_AUDIO_PRE_FF_REWIND,
|
||||||
Q_AUDIO_FF_REWIND,
|
Q_AUDIO_FF_REWIND,
|
||||||
|
Q_AUDIO_SEEK_COMPLETE,
|
||||||
Q_AUDIO_FLUSH_RELOAD,
|
Q_AUDIO_FLUSH_RELOAD,
|
||||||
Q_AUDIO_CODEC_DONE,
|
Q_AUDIO_CODEC_DONE,
|
||||||
Q_AUDIO_FLUSH,
|
Q_AUDIO_FLUSH,
|
||||||
|
|
@ -684,15 +686,8 @@ off_t codec_mp3_get_filepos_callback(int newtime)
|
||||||
|
|
||||||
void codec_seek_complete_callback(void)
|
void codec_seek_complete_callback(void)
|
||||||
{
|
{
|
||||||
/* assume we're called from non-voice codec, as they shouldn't seek */
|
|
||||||
if (pcm_is_paused()) {
|
|
||||||
/* If this is not a seamless seek, clear the buffer */
|
|
||||||
pcmbuf_play_stop();
|
|
||||||
/* If playback was not 'deliberately' paused, unpause now */
|
|
||||||
if (!paused)
|
|
||||||
pcmbuf_pause(false);
|
|
||||||
}
|
|
||||||
ci.seek_time = 0;
|
ci.seek_time = 0;
|
||||||
|
queue_post(&audio_queue, Q_AUDIO_SEEK_COMPLETE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool codec_seek_buffer_callback(size_t newpos)
|
bool codec_seek_buffer_callback(size_t newpos)
|
||||||
|
|
@ -1877,12 +1872,28 @@ void audio_thread(void)
|
||||||
initiate_track_change((long)ev.data);
|
initiate_track_change((long)ev.data);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Q_AUDIO_PRE_FF_REWIND:
|
||||||
|
if (!playing)
|
||||||
|
break;
|
||||||
|
pcmbuf_pause(true);
|
||||||
|
break;
|
||||||
|
|
||||||
case Q_AUDIO_FF_REWIND:
|
case Q_AUDIO_FF_REWIND:
|
||||||
if (!playing)
|
if (!playing)
|
||||||
break ;
|
break ;
|
||||||
ci.seek_time = (long)ev.data+1;
|
ci.seek_time = (long)ev.data+1;
|
||||||
break ;
|
break ;
|
||||||
|
|
||||||
|
case Q_AUDIO_SEEK_COMPLETE:
|
||||||
|
if (pcm_is_paused()) {
|
||||||
|
/* If this is not a seamless seek, clear the buffer */
|
||||||
|
pcmbuf_play_stop();
|
||||||
|
/* If playback was not 'deliberately' paused, unpause now */
|
||||||
|
if (!paused)
|
||||||
|
pcmbuf_pause(false);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case Q_AUDIO_DIR_SKIP:
|
case Q_AUDIO_DIR_SKIP:
|
||||||
logf("audio_dir_skip");
|
logf("audio_dir_skip");
|
||||||
playlist_end = false;
|
playlist_end = false;
|
||||||
|
|
@ -2237,7 +2248,7 @@ void audio_prev_dir(void)
|
||||||
|
|
||||||
void audio_pre_ff_rewind(void) {
|
void audio_pre_ff_rewind(void) {
|
||||||
logf("pre ff/rewind");
|
logf("pre ff/rewind");
|
||||||
pcmbuf_pause(true);
|
queue_post(&audio_queue, Q_AUDIO_PRE_FF_REWIND, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void audio_ff_rewind(long newpos)
|
void audio_ff_rewind(long newpos)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue