set correct index when playlist got reloaded

This commit is contained in:
jb-alvarado 2022-04-02 22:05:10 +02:00
parent 4774b719e4
commit 737c108b27

View File

@ -83,6 +83,9 @@ impl CurrentProgram {
self.json_mod = json.modified; self.json_mod = json.modified;
self.nodes = json.program; self.nodes = json.program;
self.get_current_clip();
self.index += 1;
} }
} else { } else {
error!( error!(
@ -159,28 +162,43 @@ impl CurrentProgram {
} }
} }
fn get_init_clip(&mut self) { fn get_current_time(&mut self) -> f64 {
let mut time_sec = get_sec(); let mut time_sec = get_sec();
if time_sec < self.start_sec { if time_sec < self.start_sec {
time_sec += self.config.playlist.length_sec.unwrap() time_sec += self.config.playlist.length_sec.unwrap()
} }
time_sec
}
fn get_current_clip(&mut self) {
let time_sec = self.get_current_time();
for (i, item) in self.nodes.iter_mut().enumerate() { for (i, item) in self.nodes.iter_mut().enumerate() {
if item.begin.unwrap() + item.out - item.seek > time_sec { if item.begin.unwrap() + item.out - item.seek > time_sec {
*self.init.lock().unwrap() = false; *self.init.lock().unwrap() = false;
self.index = i + 1; self.index = i;
// de-instance node to preserve original values in list
let mut node_clone = item.clone();
node_clone.seek = time_sec - node_clone.begin.unwrap();
self.current_node = handle_list_init(node_clone);
break; break;
} }
} }
} }
fn init_clip(&mut self) {
self.get_current_clip();
if !*self.init.lock().unwrap() {
let time_sec = self.get_current_time();
// de-instance node to preserve original values in list
let mut node_clone = self.nodes[self.index].clone();
self.index += 1;
node_clone.seek = time_sec - node_clone.begin.unwrap();
self.current_node = handle_list_init(node_clone);
}
}
} }
impl Iterator for CurrentProgram { impl Iterator for CurrentProgram {
@ -192,7 +210,7 @@ impl Iterator for CurrentProgram {
self.check_update(true); self.check_update(true);
if self.json_path.is_some() { if self.json_path.is_some() {
self.get_init_clip(); self.init_clip();
} }
if *self.init.lock().unwrap() { if *self.init.lock().unwrap() {
@ -209,7 +227,7 @@ impl Iterator for CurrentProgram {
>= self.config.playlist.length_sec.unwrap() >= self.config.playlist.length_sec.unwrap()
+ self.config.playlist.start_sec.unwrap() + self.config.playlist.start_sec.unwrap()
{ {
self.get_init_clip(); self.init_clip();
} else { } else {
let mut current_time = get_sec(); let mut current_time = get_sec();
let (_, total_delta) = get_delta(&current_time); let (_, total_delta) = get_delta(&current_time);