Added connected devices. Improved logging. UI fixes

This commit is contained in:
Ultradesu
2026-06-10 23:30:03 +01:00
parent bcee68eb4e
commit 02a396c146
25 changed files with 2540 additions and 314 deletions
+29 -3
View File
@@ -27,7 +27,9 @@ pub fn amplitude(percent: u8) -> f32 {
pub enum PlayerEvent {
/// A track played to its end. `has_next` is true when a prefetched
/// source was already queued and is now playing gaplessly.
TrackFinished { has_next: bool },
TrackFinished {
has_next: bool,
},
Failed(String),
}
@@ -44,6 +46,8 @@ enum Command {
byte_len: Option<u64>,
},
TogglePause,
Pause,
Resume,
Stop,
Seek(Duration),
SetVolume(f32),
@@ -92,6 +96,14 @@ impl Controller {
let _ = self.tx.send(Command::TogglePause);
}
pub fn pause(&self) {
let _ = self.tx.send(Command::Pause);
}
pub fn resume(&self) {
let _ = self.tx.send(Command::Resume);
}
pub fn stop(&self) {
let _ = self.tx.send(Command::Stop);
}
@@ -140,7 +152,9 @@ fn run(rx: Receiver<Command>, shared: Arc<Shared>, on_event: impl Fn(PlayerEvent
shared
.position_ms
.store(out.player.get_pos().as_millis() as u64, Ordering::Relaxed);
shared.paused.store(out.player.is_paused(), Ordering::Relaxed);
shared
.paused
.store(out.player.is_paused(), Ordering::Relaxed);
let len = out.player.len();
if track_loaded && len < last_len {
if len == 0 {
@@ -223,7 +237,9 @@ fn handle(
match builder.build() {
Ok(decoder) => out.player.append(decoder),
Err(err) => {
on_event(PlayerEvent::Failed(format!("cannot decode next track: {err}")));
on_event(PlayerEvent::Failed(format!(
"cannot decode next track: {err}"
)));
}
}
}
@@ -236,6 +252,16 @@ fn handle(
}
}
}
Command::Pause => {
if let Some(out) = output {
out.player.pause();
}
}
Command::Resume => {
if let Some(out) = output {
out.player.play();
}
}
Command::Stop => {
if let Some(out) = output {
out.player.stop();