From 7bcd344d6dfb474dd0e00e4820932016738673d3 Mon Sep 17 00:00:00 2001 From: jb-alvarado Date: Fri, 8 Apr 2022 15:13:42 +0200 Subject: [PATCH] fix reset status on new day, better error messsages for rpc --- src/input/playlist.rs | 1 + src/rpc/mod.rs | 25 ++++++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/input/playlist.rs b/src/input/playlist.rs index 2371878a..a4b5cccf 100644 --- a/src/input/playlist.rs +++ b/src/input/playlist.rs @@ -157,6 +157,7 @@ impl CurrentProgram { }); *self.playout_stat.current_date.lock().unwrap() = json.date.clone(); + *self.playout_stat.time_shift.lock().unwrap() = 0.0; let status_data: String = serde_json::to_string(&data).expect("Serialize status data failed"); fs::write(self.config.general.stat_file.clone(), &status_data) diff --git a/src/rpc/mod.rs b/src/rpc/mod.rs index f8d95368..295a3753 100644 --- a/src/rpc/mod.rs +++ b/src/rpc/mod.rs @@ -75,11 +75,12 @@ pub async fn json_rpc_server( let mut date = playout_stat.date.lock().unwrap(); if map.contains_key("control") && &map["control"] == "next" { - if let Ok(_) = kill_decoder(proc.decoder_term.clone()) { - info!("Move to next clip"); - let index = *play.index.lock().unwrap(); + let index = *play.index.lock().unwrap(); + + if index < play.current_list.lock().unwrap().len() { + if let Ok(_) = kill_decoder(proc.decoder_term.clone()) { + info!("Move to next clip"); - if index < play.current_list.lock().unwrap().len() { let mut data_map = Map::new(); let mut media = play.current_list.lock().unwrap()[index].clone(); media.add_probe(); @@ -95,15 +96,18 @@ pub async fn json_rpc_server( return Ok(Value::Object(data_map)); } + + return Ok(Value::String("Move failed".to_string())); } - return Ok(Value::String("Move failed".to_string())); + + return Ok(Value::String("Last clip can not be skipped".to_string())); } if map.contains_key("control") && &map["control"] == "back" { - if let Ok(_) = kill_decoder(proc.decoder_term.clone()) { - let index = *play.index.lock().unwrap(); + let index = *play.index.lock().unwrap(); - if index > 1 && play.current_list.lock().unwrap().len() > 1 { + if index > 1 && play.current_list.lock().unwrap().len() > 1 { + if let Ok(_) = kill_decoder(proc.decoder_term.clone()) { info!("Move to last clip"); let mut data_map = Map::new(); let mut media = play.current_list.lock().unwrap()[index - 2].clone(); @@ -121,8 +125,11 @@ pub async fn json_rpc_server( return Ok(Value::Object(data_map)); } + + return Ok(Value::String("Move failed".to_string())); } - return Ok(Value::String("Move failed".to_string())); + + return Ok(Value::String("Clip index out of range".to_string())); } if map.contains_key("control") && &map["control"] == "reset" {