Send quue modifier updates

This commit is contained in:
Hans Mündelein 2023-06-09 16:55:25 +02:00
parent 3b84583e5c
commit 4b1546d91f
Signed by: hans
GPG Key ID: BA7B55E984CE74F4
1 changed files with 42 additions and 12 deletions

View File

@ -1,6 +1,7 @@
use crate::PlaybackMessage; use crate::PlaybackMessage;
use crate::ProviderMessage; use crate::ProviderMessage;
use audio_player::Player; use audio_player::Player;
use crabidy_core::proto::crabidy::QueueModifiers;
use crabidy_core::proto::crabidy::{ use crabidy_core::proto::crabidy::{
get_update_stream_response::Update as StreamUpdate, InitResponse, PlayState, QueueTrack, Track, get_update_stream_response::Update as StreamUpdate, InitResponse, PlayState, QueueTrack, Track,
TrackPosition, TrackPosition,
@ -47,9 +48,13 @@ impl Playback {
match message { match message {
PlaybackMessage::Init { result_tx, span } => { PlaybackMessage::Init { result_tx, span } => {
let _e = span.enter(); let _e = span.enter();
let repeat;
let shuffle;
let response = { let response = {
let queue = self.queue.lock().unwrap(); let queue = self.queue.lock().unwrap();
debug!("got queue lock"); debug!("got queue lock");
repeat = queue.repeat;
shuffle = queue.shuffle;
let queue_track = QueueTrack { let queue_track = QueueTrack {
queue_position: queue.current_position() as u32, queue_position: queue.current_position() as u32,
track: queue.current_track(), track: queue.current_track(),
@ -81,6 +86,7 @@ impl Playback {
volume: 0.0, volume: 0.0,
mute: false, mute: false,
position: Some(position), position: Some(position),
mods: Some(QueueModifiers { repeat, shuffle }),
} }
}; };
trace!("response {:?}", response); trace!("response {:?}", response);
@ -235,24 +241,48 @@ impl Playback {
PlaybackMessage::ToggleShuffle { span } => { PlaybackMessage::ToggleShuffle { span } => {
let _e = span.enter(); let _e = span.enter();
debug!("toggling shuffle"); debug!("toggling shuffle");
let mut queue = self.queue.lock().unwrap(); let shuffle;
debug!("got queue lock"); let repeat;
if queue.shuffle { {
queue.shuffle_on() let mut queue = self.queue.lock().unwrap();
} else { debug!("got queue lock");
queue.shuffle_off() shuffle = queue.shuffle;
repeat = queue.repeat;
if queue.shuffle {
queue.shuffle_on()
} else {
queue.shuffle_off()
}
}
debug!("queue lock released");
let queue_update_tx = self.update_tx.clone();
let update = StreamUpdate::Mods(QueueModifiers { shuffle, repeat });
if let Err(err) = queue_update_tx.send(update) {
error!("{:?}", err)
} }
} }
PlaybackMessage::ToggleRepeat { span } => { PlaybackMessage::ToggleRepeat { span } => {
let _e = span.enter(); let _e = span.enter();
debug!("toggling repeat"); debug!("toggling repeat");
let mut queue = self.queue.lock().unwrap(); let shuffle;
debug!("got queue lock"); let repeat;
if queue.repeat { {
queue.repeat = false let mut queue = self.queue.lock().unwrap();
} else { debug!("got queue lock");
queue.repeat = true shuffle = queue.shuffle;
repeat = queue.repeat;
if queue.repeat {
queue.repeat = false
} else {
queue.repeat = true
}
}
debug!("queue lock released");
let queue_update_tx = self.update_tx.clone();
let update = StreamUpdate::Mods(QueueModifiers { shuffle, repeat });
if let Err(err) = queue_update_tx.send(update) {
error!("{:?}", err)
} }
} }