Fix playback speed configuration after change playback options
This commit is contained in:
parent
8ad4f00c26
commit
26f396e4c8
1 changed files with 9 additions and 15 deletions
24
src/main.rs
24
src/main.rs
|
|
@ -464,7 +464,9 @@ impl App {
|
||||||
self.update_flags();
|
self.update_flags();
|
||||||
self.update_mpris_meta();
|
self.update_mpris_meta();
|
||||||
if self.playback_speed != 1.0 {
|
if self.playback_speed != 1.0 {
|
||||||
self.apply_playback_speed();
|
if let Some(video) = &mut self.video_opt {
|
||||||
|
Self::apply_speed(video, self.playback_speed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
self.update_title()
|
self.update_title()
|
||||||
}
|
}
|
||||||
|
|
@ -859,19 +861,9 @@ impl App {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn apply_playback_speed(&self) {
|
fn apply_speed(video: &mut Video, speed: f64) {
|
||||||
let Some(video) = &self.video_opt else { return };
|
if let Err(err) = video.set_speed(speed) {
|
||||||
let pipeline = video.pipeline();
|
log::warn!("failed to set playback speed {}: {}", speed, err);
|
||||||
let position = gst::ClockTime::from_nseconds(video.position().as_nanos() as u64);
|
|
||||||
if let Err(err) = pipeline.seek(
|
|
||||||
self.playback_speed,
|
|
||||||
gst::SeekFlags::FLUSH | gst::SeekFlags::ACCURATE,
|
|
||||||
gst::SeekType::Set,
|
|
||||||
position,
|
|
||||||
gst::SeekType::None,
|
|
||||||
gst::ClockTime::NONE,
|
|
||||||
) {
|
|
||||||
log::warn!("failed to set playback speed {}: {}", self.playback_speed, err);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1511,7 +1503,9 @@ impl Application for App {
|
||||||
Message::PlaybackSpeed(speed) => {
|
Message::PlaybackSpeed(speed) => {
|
||||||
self.playback_speed = speed;
|
self.playback_speed = speed;
|
||||||
self.dropdown_opt = None;
|
self.dropdown_opt = None;
|
||||||
self.apply_playback_speed();
|
if let Some(video) = &mut self.video_opt {
|
||||||
|
Self::apply_speed(video, speed);
|
||||||
|
}
|
||||||
self.update_controls(true);
|
self.update_controls(true);
|
||||||
}
|
}
|
||||||
Message::VideoAreaClick => {
|
Message::VideoAreaClick => {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue