Input: Allow Restartable sources to be lazy

This change is made with queue users in mind. Since sources
of this kind *know* how to (re)create themselves, they can
avoid being created at all until needed.

This also adds machinery to preload tracks *before* they are
needed, for gapless playback on queues and so on. Queues
make use of the event system to do this.
This commit is contained in:
Kyle Simpson
2020-12-28 17:02:10 +00:00
parent c0d3cb3113
commit 03ae0e7628
10 changed files with 368 additions and 101 deletions

View File

@@ -86,6 +86,15 @@ impl Reader {
_ => {},
}
}
#[allow(clippy::single_match)]
pub(crate) fn make_playable(&mut self) {
use Reader::*;
match self {
Restartable(r) => r.make_playable(),
_ => {},
}
}
}
impl Read for Reader {