use fmod_sys::*;
use std::mem::MaybeUninit;
use crate::studio::{BufferUsage, CpuUsage, MemoryUsage, System};
use crate::{FmodResultExt, Result};
#[cfg(doc)]
use crate::studio::SystemBuilder;
impl System {
pub fn get_buffer_usage(&self) -> Result<BufferUsage> {
let mut usage = MaybeUninit::zeroed();
unsafe {
FMOD_Studio_System_GetBufferUsage(self.inner.as_ptr(), usage.as_mut_ptr())
.to_result()?;
let usage = usage.assume_init().into();
Ok(usage)
}
}
pub fn reset_buffer_usage(&self) -> Result<()> {
unsafe { FMOD_Studio_System_ResetBufferUsage(self.inner.as_ptr()).to_result() }
}
pub fn get_cpu_usage(&self) -> Result<(CpuUsage, crate::CpuUsage)> {
let mut usage = MaybeUninit::zeroed();
let mut usage_core = MaybeUninit::zeroed();
unsafe {
FMOD_Studio_System_GetCPUUsage(
self.inner.as_ptr(),
usage.as_mut_ptr(),
usage_core.as_mut_ptr(),
)
.to_result()?;
let usage = usage.assume_init().into();
let usage_core = usage_core.assume_init().into();
Ok((usage, usage_core))
}
}
pub fn get_memory_usage(&self) -> Result<MemoryUsage> {
let mut usage = MaybeUninit::zeroed();
unsafe {
FMOD_Studio_System_GetMemoryUsage(self.inner.as_ptr(), usage.as_mut_ptr())
.to_result()?;
let usage = usage.assume_init().into();
Ok(usage)
}
}
}