Send quue modifier updates
This commit is contained in:
parent
3b84583e5c
commit
4b1546d91f
|
|
@ -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,26 +241,50 @@ impl Playback {
|
||||||
PlaybackMessage::ToggleShuffle { span } => {
|
PlaybackMessage::ToggleShuffle { span } => {
|
||||||
let _e = span.enter();
|
let _e = span.enter();
|
||||||
debug!("toggling shuffle");
|
debug!("toggling shuffle");
|
||||||
|
let shuffle;
|
||||||
|
let repeat;
|
||||||
|
{
|
||||||
let mut queue = self.queue.lock().unwrap();
|
let mut queue = self.queue.lock().unwrap();
|
||||||
debug!("got queue lock");
|
debug!("got queue lock");
|
||||||
|
shuffle = queue.shuffle;
|
||||||
|
repeat = queue.repeat;
|
||||||
if queue.shuffle {
|
if queue.shuffle {
|
||||||
queue.shuffle_on()
|
queue.shuffle_on()
|
||||||
} else {
|
} else {
|
||||||
queue.shuffle_off()
|
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 shuffle;
|
||||||
|
let repeat;
|
||||||
|
{
|
||||||
let mut queue = self.queue.lock().unwrap();
|
let mut queue = self.queue.lock().unwrap();
|
||||||
debug!("got queue lock");
|
debug!("got queue lock");
|
||||||
|
shuffle = queue.shuffle;
|
||||||
|
repeat = queue.repeat;
|
||||||
if queue.repeat {
|
if queue.repeat {
|
||||||
queue.repeat = false
|
queue.repeat = false
|
||||||
} else {
|
} else {
|
||||||
queue.repeat = true
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PlaybackMessage::TogglePlay { span } => {
|
PlaybackMessage::TogglePlay { span } => {
|
||||||
let _e = span.enter();
|
let _e = span.enter();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue