mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-05-03 15:10:14 +02:00
JackPerfModel::update_from_jack_scope
This commit is contained in:
parent
9d88a7361f
commit
c35d505b9c
29
Cargo.lock
generated
29
Cargo.lock
generated
|
@ -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"
|
||||
|
|
|
@ -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" }
|
||||
|
|
|
@ -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|{
|
||||
|
|
|
@ -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" }
|
||||
|
|
|
@ -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" }
|
||||
|
|
|
@ -58,7 +58,7 @@ impl Plugin {
|
|||
|
||||
pub struct PluginAudio(Arc<RwLock<Plugin>>);
|
||||
from!(|model: &Arc<RwLock<Plugin>>| 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 {
|
||||
|
|
|
@ -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" }
|
||||
|
|
|
@ -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" }
|
||||
|
||||
|
|
|
@ -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<u64>, 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<u64> {
|
||||
if self.enabled {
|
||||
Some(self.clock.raw())
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
pub fn get_t1 (&self, t0: Option<u64>) -> Option<std::time::Duration> {
|
||||
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<u64>, scope: &ProcessScope) {
|
||||
impl JackPerfModel for PerfModel {
|
||||
fn update_from_jack_scope (&self, t0: Option<u64>, 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<f64> {
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue