Disable gapless playback via runtime flag (#444)

* Enable gapless playback via runtime flag

* Set gapless playback as default, use `--disable-gapless` to turn it off

* Ensure sink restarts b/w tracks when gapless is disabled
This commit is contained in:
Ash 2020-03-10 13:00:57 +01:00 committed by GitHub
parent 66f8a98ad2
commit ef27b4bce3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 1 deletions

View file

@ -30,6 +30,7 @@ pub struct PlayerConfig {
pub bitrate: Bitrate,
pub normalisation: bool,
pub normalisation_pregain: f32,
pub gapless: bool,
}
impl Default for PlayerConfig {
@ -38,6 +39,7 @@ impl Default for PlayerConfig {
bitrate: Bitrate::default(),
normalisation: false,
normalisation_pregain: 0.0,
gapless: true,
}
}
}

View file

@ -1065,6 +1065,9 @@ impl PlayerInternal {
play: bool,
position_ms: u32,
) {
if !self.config.gapless {
self.ensure_sink_stopped();
}
// emit the correct player event
match self.state {
PlayerState::Playing {

View file

@ -180,6 +180,11 @@ fn setup(args: &[String]) -> Setup {
"",
"autoplay",
"autoplay similar songs when your music ends.",
)
.optflag(
"",
"disable-gapless",
"disable gapless playback.",
);
let matches = match opts.parse(&args[1..]) {
@ -312,9 +317,9 @@ fn setup(args: &[String]) -> Setup {
.as_ref()
.map(|bitrate| Bitrate::from_str(bitrate).expect("Invalid bitrate"))
.unwrap_or(Bitrate::default());
PlayerConfig {
bitrate: bitrate,
gapless: !matches.opt_present("disable-gapless"),
normalisation: matches.opt_present("enable-volume-normalisation"),
normalisation_pregain: matches
.opt_str("normalisation-pregain")