don't mark empty scenes as playing

This commit is contained in:
🪞👃🪞 2024-10-24 23:21:32 +03:00
parent dd21f73e9d
commit c81fd97eb2
2 changed files with 13 additions and 12 deletions

View file

@ -675,17 +675,18 @@ impl Scene {
}
/// Returns true if all phrases in the scene are currently playing
pub fn is_playing <E: Engine> (&self, tracks: &[ArrangementTrack<E>]) -> bool {
self.clips.iter().enumerate().all(|(track_index, clip)|match clip {
Some(clip) => tracks
.get(track_index)
.map(|track|if let Some(phrase) = &track.player.phrase {
*phrase.read().unwrap() == *clip.read().unwrap()
} else {
false
})
.unwrap_or(false),
None => true
})
self.clips.iter().any(|clip|clip.is_some()) && self.clips.iter().enumerate()
.all(|(track_index, clip)|match clip {
Some(clip) => tracks
.get(track_index)
.map(|track|if let Some(phrase) = &track.player.phrase {
*phrase.read().unwrap() == *clip.read().unwrap()
} else {
false
})
.unwrap_or(false),
None => true
})
}
pub fn ppqs (scenes: &[Self], factor: usize) -> Vec<(usize, usize)> {
let mut total = 0;

View file

@ -175,7 +175,7 @@ impl<'a> Content for VerticalArranger<'a, Tui> {
// scene titles
let scene_name = |scene, playing: bool, height|row!(
if playing { " " } else { " " },
if playing { " " } else { " " },
(scene as &Scene).name.read().unwrap().as_str(),
).fixed_xy(offset.saturating_sub(1), height);