Merge branch 'main' into script-to-host-messages

This commit is contained in:
mars 2022-11-20 00:38:15 -07:00
commit f40d251ca4
1 changed files with 15 additions and 1 deletions

View File

@ -44,7 +44,7 @@ impl<'a> From<MetadataMap<'a>> for Metadata {
.get("xesam:trackNumber")
.and_then(|v| TryFrom::try_from(v).ok()),
length: map
.get("xesam:length")
.get("mpris:length")
.and_then(|v| i64::try_from(v).ok())
.map(|us| us as f32 / 1_000_000.0), // 1,000,000 microseconds in a second
};
@ -70,6 +70,8 @@ impl Metadata {
if self.track != new.track {
messenger.send_panel_json(0, &InMsg::TrackChanged(new.track.clone()));
let progress = ProgressChanged { position: 0.0 };
messenger.send_panel_json(0, &InMsg::ProgressChanged(progress));
}
*self = new;
@ -83,6 +85,7 @@ async fn player_main(
use futures_util::StreamExt;
let mut playback_status = player.receive_playback_status_changed().await.fuse();
let mut metadata_tracker = player.receive_metadata_changed().await.fuse();
let mut position_tracker = player.receive_position_changed().await.fuse();
let mut metadata = Metadata::new(magpie, player.metadata().await?);
@ -107,6 +110,17 @@ async fn player_main(
magpie.send_panel_json(0, &InMsg::PlaybackStatusChanged(status));
}
}
position = position_tracker.next() => {
let position = match position {
Some(v) => v,
None => break,
};
let position = position.get().await?;
let position = position as f32 / 1_000_000.0; // Microseconds to seconds
let progress = ProgressChanged { position };
magpie.send_panel_json(0, &InMsg::ProgressChanged(progress));
}
new_metadata = metadata_tracker.next() => {
let new_metadata = match new_metadata {
Some(v) => v,