Fix auto-play next track during pause/unpause transitions
All checks were successful
Build and Release / build-and-release (push) Successful in 53s
All checks were successful
Build and Release / build-and-release (push) Successful in 53s
When rapidly pressing play/pause, MPV briefly reports idle-active as true during state transitions. Combined with our player_state being set to Playing after unpause, this incorrectly triggered the auto-play next track logic. Fix: Add is_paused() check to auto-play condition to ensure we only advance to next track when the current track actually ends, not during pause state transitions.
This commit is contained in:
parent
1c2c942e4b
commit
55e3f04e2c
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "cm-player"
|
||||
version = "0.1.21"
|
||||
version = "0.1.22"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@ -304,7 +304,8 @@ async fn run_app<B: ratatui::backend::Backend>(
|
||||
|
||||
// Check if track ended and play next (but only if track was actually loaded AND played)
|
||||
// Require position > 0.5 to ensure track actually started playing (not just loaded)
|
||||
if player.is_idle() && state.player_state == PlayerState::Playing && state.current_duration > 0.0 && state.current_position > 0.5 {
|
||||
// Also check !is_paused to avoid triggering during pause/unpause transitions
|
||||
if player.is_idle() && !player.is_paused() && state.player_state == PlayerState::Playing && state.current_duration > 0.0 && state.current_position > 0.5 {
|
||||
state.play_next();
|
||||
// play_next() handles the play mode and may stop if in Normal mode at end
|
||||
if state.player_state == PlayerState::Playing {
|
||||
|
||||
@ -327,6 +327,10 @@ impl Player {
|
||||
self.is_idle
|
||||
}
|
||||
|
||||
pub fn is_paused(&self) -> bool {
|
||||
self.is_paused
|
||||
}
|
||||
|
||||
pub fn is_process_alive(&mut self) -> bool {
|
||||
// Check if mpv process is still running
|
||||
match self.process.try_wait() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user