Merge branch 'main' into script-to-host-messages
This commit is contained in:
commit
f40d251ca4
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue