diff --git a/Cargo.lock b/Cargo.lock index 619a697..0ada172 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1922,6 +1922,7 @@ dependencies = [ "rubato", "thread-priority", "wgpu", + "windows 0.58.0", "winit", ] diff --git a/Cargo.toml b/Cargo.toml index 0b86a83..5b62f02 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,6 +23,9 @@ thread-priority = "1" wgpu = "23.0" winit = "0.30" +[target.'cfg(windows)'.dependencies] +windows = { version = "0.58", features = ["Win32_System_Threading"] } + [build-dependencies] cc = "1" diff --git a/src/main.rs b/src/main.rs index c0fc4b9..8c47f3b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,7 +19,19 @@ struct Args { rom: Option, } +#[cfg(windows)] +fn set_process_priority_to_high() -> Result<()> { + use windows::Win32::{Foundation, System::Threading}; + let process = unsafe { Threading::GetCurrentProcess() }; + unsafe { Threading::SetPriorityClass(process, Threading::HIGH_PRIORITY_CLASS)? }; + unsafe { Foundation::CloseHandle(process)? }; + Ok(()) +} + fn main() -> Result<()> { + #[cfg(windows)] + set_process_priority_to_high()?; + let args = Args::parse(); let (mut builder, client) = EmulatorBuilder::new();