diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index b4a61f61..edba8265 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -4064,6 +4064,7 @@ dependencies = [ "image", "libc", "lofty", + "mach2", "md5", "psysonic-analysis", "psysonic-audio", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 73c9a8c6..fdc585f0 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -80,6 +80,9 @@ webp = "0.3" [target.'cfg(unix)'.dependencies] libc = "0.2" +[target.'cfg(target_os = "macos")'.dependencies] +mach2 = "0.5" + [target.'cfg(target_os = "linux")'.dependencies] zbus = { version = "5.15", default-features = false, features = ["blocking-api", "async-io"] } # Match wry/tauri’s WebKitGTK stack — used only to turn off kinetic wheel scrolling. diff --git a/src-tauri/src/lib_commands/app_api/perf.rs b/src-tauri/src/lib_commands/app_api/perf.rs index 001840d9..bcf69744 100644 --- a/src-tauri/src/lib_commands/app_api/perf.rs +++ b/src-tauri/src/lib_commands/app_api/perf.rs @@ -369,17 +369,23 @@ mod macos { } fn read_host_total_cpu_ticks() -> u64 { + use mach2::kern_return::KERN_SUCCESS; + use mach2::mach_init::mach_host_self; + use mach2::traps::mach_task_self; + use mach2::vm::mach_vm_deallocate; + use mach2::vm_types::{mach_vm_address_t, mach_vm_size_t}; + let mut num_cpus: u32 = 0; let mut cpu_info: *mut i32 = std::ptr::null_mut(); let mut num_cpu_info: u32 = 0; let ok = unsafe { libc::host_processor_info( - libc::mach_host_self(), + mach_host_self(), libc::PROCESSOR_CPU_LOAD_INFO, &mut num_cpus, &mut cpu_info, &mut num_cpu_info, - ) == libc::KERN_SUCCESS + ) == KERN_SUCCESS }; if !ok || cpu_info.is_null() { return 0; @@ -392,8 +398,11 @@ mod macos { }; unsafe { let size = num_cpu_info as usize * mem::size_of::(); - #[allow(deprecated)] - libc::vm_deallocate(libc::mach_task_self(), cpu_info as _, size); + mach_vm_deallocate( + mach_task_self(), + cpu_info as mach_vm_address_t, + size as mach_vm_size_t, + ); } total }