From c35d505b9c03c9054921bf3789059426b3a94b4a Mon Sep 17 00:00:00 2001 From: unspeaker Date: Tue, 4 Mar 2025 20:59:07 +0200 Subject: [PATCH] JackPerfModel::update_from_jack_scope --- Cargo.lock | 29 ++++++++++----------- app/Cargo.toml | 2 +- app/src/audio.rs | 2 +- midi/Cargo.toml | 2 +- plugin/Cargo.toml | 2 +- plugin/src/plugin.rs | 2 +- sampler/Cargo.toml | 2 +- time/Cargo.toml | 5 ++-- time/src/perf.rs | 60 +++++--------------------------------------- 9 files changed, 30 insertions(+), 76 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index eedbffe2..40925766 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -501,9 +501,9 @@ dependencies = [ [[package]] name = "indoc" -version = "2.0.5" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" +checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd" [[package]] name = "instability" @@ -553,9 +553,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jack" @@ -1130,9 +1130,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "rusty-fork" @@ -1148,9 +1148,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "scopeguard" @@ -1499,7 +1499,7 @@ dependencies = [ [[package]] name = "tek_edn" version = "0.1.0" -source = "git+https://codeberg.org/unspeaker/tengri?rev=d5a304e#d5a304e64593fc38b4a393b5e1fdf3fc60baf35d" +source = "git+https://codeberg.org/unspeaker/tengri?rev=6cd85ef#6cd85efe503135cc5a20da9366ff81a0bbe5f56c" dependencies = [ "itertools 0.14.0", "konst", @@ -1509,7 +1509,7 @@ dependencies = [ [[package]] name = "tek_input" version = "0.2.0" -source = "git+https://codeberg.org/unspeaker/tengri?rev=d5a304e#d5a304e64593fc38b4a393b5e1fdf3fc60baf35d" +source = "git+https://codeberg.org/unspeaker/tengri?rev=6cd85ef#6cd85efe503135cc5a20da9366ff81a0bbe5f56c" dependencies = [ "tek_edn", ] @@ -1535,7 +1535,7 @@ dependencies = [ [[package]] name = "tek_output" version = "0.2.0" -source = "git+https://codeberg.org/unspeaker/tengri?rev=d5a304e#d5a304e64593fc38b4a393b5e1fdf3fc60baf35d" +source = "git+https://codeberg.org/unspeaker/tengri?rev=6cd85ef#6cd85efe503135cc5a20da9366ff81a0bbe5f56c" dependencies = [ "tek_edn", ] @@ -1572,12 +1572,13 @@ dependencies = [ "tek_edn", "tek_input", "tek_jack", + "tek_tui", ] [[package]] name = "tek_tui" version = "0.2.0" -source = "git+https://codeberg.org/unspeaker/tengri?rev=d5a304e#d5a304e64593fc38b4a393b5e1fdf3fc60baf35d" +source = "git+https://codeberg.org/unspeaker/tengri?rev=6cd85ef#6cd85efe503135cc5a20da9366ff81a0bbe5f56c" dependencies = [ "atomic_float", "better-panic", @@ -1703,9 +1704,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-ident" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-segmentation" diff --git a/app/Cargo.toml b/app/Cargo.toml index b2966e12..774d32f1 100644 --- a/app/Cargo.toml +++ b/app/Cargo.toml @@ -4,7 +4,7 @@ edition = "2021" version = "0.2.0" [dependencies] -tek_tui = { git = "https://codeberg.org/unspeaker/tengri", rev = "d5a304e" } +tek_tui = { git = "https://codeberg.org/unspeaker/tengri", rev = "6cd85ef" } tek_jack = { path = "../jack" } tek_time = { path = "../time" } diff --git a/app/src/audio.rs b/app/src/audio.rs index 44a23815..6d42c36d 100644 --- a/app/src/audio.rs +++ b/app/src/audio.rs @@ -67,7 +67,7 @@ audio!( } } // End profiling cycle - self.perf.update(t0, scope); + self.perf.update_from_jack_scope(t0, scope); Control::Continue }; |self, event|{ diff --git a/midi/Cargo.toml b/midi/Cargo.toml index 67ee3223..de11c479 100644 --- a/midi/Cargo.toml +++ b/midi/Cargo.toml @@ -4,7 +4,7 @@ edition = "2021" version = "0.2.0" [dependencies] -tek_tui = { git = "https://codeberg.org/unspeaker/tengri", rev = "d5a304e" } +tek_tui = { git = "https://codeberg.org/unspeaker/tengri", rev = "6cd85ef" } tek_jack = { path = "../jack" } tek_time = { path = "../time" } diff --git a/plugin/Cargo.toml b/plugin/Cargo.toml index 681932c0..de2f2243 100644 --- a/plugin/Cargo.toml +++ b/plugin/Cargo.toml @@ -4,7 +4,7 @@ edition = "2021" version = "0.2.0" [dependencies] -tek_tui = { git = "https://codeberg.org/unspeaker/tengri", rev = "d5a304e" } +tek_tui = { git = "https://codeberg.org/unspeaker/tengri", rev = "6cd85ef" } tek_jack = { path = "../jack" } tek_time = { path = "../time" } diff --git a/plugin/src/plugin.rs b/plugin/src/plugin.rs index 0417b2f2..ddd58e65 100644 --- a/plugin/src/plugin.rs +++ b/plugin/src/plugin.rs @@ -58,7 +58,7 @@ impl Plugin { pub struct PluginAudio(Arc>); from!(|model: &Arc>| PluginAudio = Self(model.clone())); -audio!(|self: PluginAudio, client, scope|{ +audio!(|self: PluginAudio, _client, scope|{ let state = &mut*self.0.write().unwrap(); match state.plugin.as_mut() { Some(PluginKind::LV2(LV2Plugin { diff --git a/sampler/Cargo.toml b/sampler/Cargo.toml index d6342d2e..f9716bea 100644 --- a/sampler/Cargo.toml +++ b/sampler/Cargo.toml @@ -4,7 +4,7 @@ edition = "2021" version = "0.2.0" [dependencies] -tek_tui = { git = "https://codeberg.org/unspeaker/tengri", rev = "d5a304e" } +tek_tui = { git = "https://codeberg.org/unspeaker/tengri", rev = "6cd85ef" } tek_jack = { path = "../jack" } tek_time = { path = "../time" } diff --git a/time/Cargo.toml b/time/Cargo.toml index c9add1a5..1f54803f 100644 --- a/time/Cargo.toml +++ b/time/Cargo.toml @@ -4,8 +4,9 @@ edition = "2021" version = "0.2.0" [dependencies] -tek_input = { git = "https://codeberg.org/unspeaker/tengri", rev = "d5a304e" } -tek_edn = { git = "https://codeberg.org/unspeaker/tengri", rev = "d5a304e" } +tek_input = { git = "https://codeberg.org/unspeaker/tengri", rev = "6cd85ef" } +tek_edn = { git = "https://codeberg.org/unspeaker/tengri", rev = "6cd85ef" } +tek_tui = { git = "https://codeberg.org/unspeaker/tengri", rev = "6cd85ef" } tek_jack = { path = "../jack" } diff --git a/time/src/perf.rs b/time/src/perf.rs index 00f4c799..58f40689 100644 --- a/time/src/perf.rs +++ b/time/src/perf.rs @@ -1,70 +1,22 @@ use crate::*; +use tek_tui::PerfModel; -/// Performance counter -#[derive(Debug)] -pub struct PerfModel { - pub enabled: bool, - clock: quanta::Clock, - // In nanoseconds - used: AtomicF64, - // In microseconds - period: AtomicF64, +pub trait JackPerfModel { + fn update_from_jack_scope (&self, t0: Option, scope: &ProcessScope); } -pub trait HasPerf { - fn perf (&self) -> &PerfModel; -} - -impl Default for PerfModel { - fn default () -> Self { - Self { - enabled: true, - clock: quanta::Clock::new(), - used: Default::default(), - period: Default::default(), - } - } -} - -impl PerfModel { - pub fn get_t0 (&self) -> Option { - if self.enabled { - Some(self.clock.raw()) - } else { - None - } - } - pub fn get_t1 (&self, t0: Option) -> Option { - if let Some(t0) = t0 { - if self.enabled { - Some(self.clock.delta(t0, self.clock.raw())) - } else { - None - } - } else { - None - } - } - pub fn update (&self, t0: Option, scope: &ProcessScope) { +impl JackPerfModel for PerfModel { + fn update_from_jack_scope (&self, t0: Option, scope: &ProcessScope) { if let Some(t0) = t0 { let t1 = self.clock.raw(); self.used.store( self.clock.delta_as_nanos(t0, t1) as f64, Relaxed, ); - self.period.store( + self.window.store( scope.cycle_times().unwrap().period_usecs as f64, Relaxed, ); } } - pub fn percentage (&self) -> Option { - let period = self.period.load(Relaxed) * 1000.0; - if period > 0.0 { - let used = self.used.load(Relaxed); - Some(100.0 * used / period) - } else { - None - } - } }