use crate::ffi::profiler_v0 as ffi;
#[doc(hidden)]
pub use ffi::API as FFI_API;
#[inline]
pub fn now_ns() -> i64 {
ffi::now_ns()
}
#[inline]
pub fn report_thread_stream_info(stream_info: &puffin::StreamInfoRef<'_>) {
let puffin::StreamInfoRef {
stream,
num_scopes,
depth,
range_ns: (range_ns_min, range_ns_max),
} = stream_info;
let stream_meta = ffi::StreamMeta {
num_scopes: *num_scopes as _,
depth: *depth as _,
range_ns_min: *range_ns_min,
range_ns_max: *range_ns_max,
};
ffi::report_thread_stream_info(&stream_meta, stream);
}
#[inline]
pub fn is_active() -> bool {
ffi::is_active()
}
pub use puffin::profile_function as function;
pub use puffin::profile_scope as scope;
pub use puffin::set_scopes_on;
#[macro_export]
macro_rules! setup_profiler {
() => {
$crate::__puffin::ThreadProfiler::initialize(
$crate::profiler::now_ns,
|_thread_info, stream_info| $crate::profiler::report_thread_stream_info(stream_info),
);
$crate::__puffin::set_scopes_on($crate::profiler::is_active());
};
}