From faf7576ad85f18b7563d719ca989d729fc6b5ff3 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Thu, 21 Nov 2024 16:41:47 +0100 Subject: [PATCH] wip(p66,e16) --- crates/tek_tui/src/tui_command.rs | 7 ++++--- crates/tek_tui/src/tui_control.rs | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/crates/tek_tui/src/tui_command.rs b/crates/tek_tui/src/tui_command.rs index 37f8360e..4da9b754 100644 --- a/crates/tek_tui/src/tui_command.rs +++ b/crates/tek_tui/src/tui_command.rs @@ -153,7 +153,7 @@ impl Command for PhraseLengthCommand { fn execute (self, state: &mut T) -> Perhaps { use PhraseLengthFocus::*; use PhraseLengthCommand::*; - let mode = state.phrases_mode_mut(); + let mut mode = state.phrases_mode_mut().clone(); if let Some(PhrasesMode::Length( phrase, ref mut length, @@ -180,10 +180,11 @@ impl Command for PhraseLengthCommand { Tick => { *length = length.saturating_sub(1) }, }, Self::Set(length) => { - let mut phrase = state.phrases()[*phrase].write().unwrap(); + let mut phrase = state.phrases()[phrase].write().unwrap(); let old_length = phrase.length; phrase.length = length; - *mode = None; + std::mem::drop(phrase); + *state.phrases_mode_mut() = None; return Ok(Some(Self::Set(old_length))) }, _ => unreachable!() diff --git a/crates/tek_tui/src/tui_control.rs b/crates/tek_tui/src/tui_control.rs index 7f67f37d..4f9af61e 100644 --- a/crates/tek_tui/src/tui_control.rs +++ b/crates/tek_tui/src/tui_control.rs @@ -44,8 +44,8 @@ impl ArrangerControl for ArrangerTui { } fn activate (&mut self) { if let ArrangerSelection::Scene(s) = self.selected { - for (t, track) in self.tracks().iter().enumerate() { - let phrase = self.scenes()[s].clips[t].clone(); + for (t, track) in self.tracks.iter_mut().enumerate() { + let phrase = self.scenes[s].clips[t].clone(); if track.player.play_phrase.is_some() || phrase.is_some() { track.enqueue_next(phrase.as_ref()); }