use internal seek to implement DiskReader::seek() when possible.
This still needs a check that the amount of readable data left in the buffe is adequate.
This commit is contained in:
parent
99c072660b
commit
057ce33563
@ -598,10 +598,13 @@ DiskReader::seek (samplepos_t sample, bool complete_refill)
|
|||||||
|
|
||||||
g_atomic_int_set (&_pending_overwrite, 0);
|
g_atomic_int_set (&_pending_overwrite, 0);
|
||||||
|
|
||||||
//sample = std::max ((samplecnt_t)0, sample -_session.worst_output_latency ());
|
DEBUG_TRACE (DEBUG::DiskIO, string_compose ("DiskReader::seek %s %ld -> %ld refill=%d\n", owner()->name().c_str(), playback_sample, sample, complete_refill));
|
||||||
|
|
||||||
//printf ("DiskReader::seek %s %ld -> %ld refill=%d\n", owner()->name().c_str(), playback_sample, sample, complete_refill);
|
const samplecnt_t distance = sample - playback_sample;
|
||||||
// TODO: check if we can micro-locate
|
if (can_internal_playback_seek (distance)) {
|
||||||
|
internal_playback_seek (distance);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
for (n = 0, chan = c->begin(); chan != c->end(); ++chan, ++n) {
|
for (n = 0, chan = c->begin(); chan != c->end(); ++chan, ++n) {
|
||||||
(*chan)->rbuf->reset ();
|
(*chan)->rbuf->reset ();
|
||||||
|
Loading…
Reference in New Issue
Block a user