fix crash when seeking

This commit is contained in:
2025-08-21 16:40:37 +03:00
parent 4c62d9f1e7
commit e6d0e6e128
+7 -3
View File
@@ -89,8 +89,8 @@ impl eframe::App for App {
// Handle changing player position // Handle changing player position
if self.player_position != self.prev_player_position { if self.player_position != self.prev_player_position {
let mut target_pos = self.player_position - 0.5; let mut target_pos = self.player_position;
target_pos = target_pos.clamp(0f32, self.max_player_position); target_pos = target_pos.clamp(0.0, self.max_player_position - 0.1);
let target_pos_dur = core::time::Duration::from_secs_f32(target_pos); let target_pos_dur = core::time::Duration::from_secs_f32(target_pos);
self.audio_sink.try_seek(target_pos_dur).unwrap(); self.audio_sink.try_seek(target_pos_dur).unwrap();
@@ -105,6 +105,10 @@ impl eframe::App for App {
} }
self.prev_player_position = self.player_position; self.prev_player_position = self.player_position;
if (self.max_player_position - self.player_position) <= 0.1 {
self.audio_sink.pause();
}
}); });
} }
} }
@@ -391,7 +395,7 @@ impl App {
} }
let file = fs::File::open(self.current_file.display().to_string()).unwrap(); let file = fs::File::open(self.current_file.display().to_string()).unwrap();
let source = Decoder::new(file).unwrap(); let source = Decoder::try_from(file).unwrap();
self.audio_sink.stop(); self.audio_sink.stop();
self.audio_sink.play(); self.audio_sink.play();