Use high-priority thread for emulation
This commit is contained in:
parent
3113934a3a
commit
924c7ea300
|
@ -1892,6 +1892,12 @@ dependencies = [
|
||||||
"windows-sys 0.52.0",
|
"windows-sys 0.52.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustversion"
|
||||||
|
version = "1.0.18"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "same-file"
|
name = "same-file"
|
||||||
version = "1.0.6"
|
version = "1.0.6"
|
||||||
|
@ -1972,6 +1978,7 @@ dependencies = [
|
||||||
"pollster",
|
"pollster",
|
||||||
"rtrb",
|
"rtrb",
|
||||||
"rubato",
|
"rubato",
|
||||||
|
"thread-priority",
|
||||||
"wgpu",
|
"wgpu",
|
||||||
"winit",
|
"winit",
|
||||||
"winver",
|
"winver",
|
||||||
|
@ -2119,6 +2126,20 @@ dependencies = [
|
||||||
"syn 2.0.87",
|
"syn 2.0.87",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thread-priority"
|
||||||
|
version = "1.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cfe075d7053dae61ac5413a34ea7d4913b6e6207844fd726bdd858b37ff72bf5"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 2.6.0",
|
||||||
|
"cfg-if",
|
||||||
|
"libc",
|
||||||
|
"log",
|
||||||
|
"rustversion",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tiny-skia"
|
name = "tiny-skia"
|
||||||
version = "0.11.4"
|
version = "0.11.4"
|
||||||
|
|
|
@ -19,6 +19,7 @@ num-traits = "0.2"
|
||||||
pollster = "0.4"
|
pollster = "0.4"
|
||||||
rtrb = "0.3"
|
rtrb = "0.3"
|
||||||
rubato = "0.16"
|
rubato = "0.16"
|
||||||
|
thread-priority = "1"
|
||||||
wgpu = "22.1"
|
wgpu = "22.1"
|
||||||
winit = "0.30"
|
winit = "0.30"
|
||||||
|
|
||||||
|
|
27
src/main.rs
27
src/main.rs
|
@ -1,9 +1,10 @@
|
||||||
use std::{path::PathBuf, process, thread};
|
use std::{path::PathBuf, process};
|
||||||
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use app::App;
|
use app::App;
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use emulator::EmulatorBuilder;
|
use emulator::EmulatorBuilder;
|
||||||
|
use thread_priority::{ThreadBuilder, ThreadPriority};
|
||||||
use winit::event_loop::{ControlFlow, EventLoop};
|
use winit::event_loop::{ControlFlow, EventLoop};
|
||||||
|
|
||||||
mod app;
|
mod app;
|
||||||
|
@ -26,16 +27,20 @@ fn main() -> Result<()> {
|
||||||
if let Some(path) = args.rom {
|
if let Some(path) = args.rom {
|
||||||
builder = builder.with_rom(&path);
|
builder = builder.with_rom(&path);
|
||||||
}
|
}
|
||||||
thread::spawn(move || {
|
|
||||||
let mut emulator = match builder.build() {
|
ThreadBuilder::default()
|
||||||
Ok(e) => e,
|
.name("Emulator".to_owned())
|
||||||
Err(err) => {
|
.priority(ThreadPriority::Max)
|
||||||
eprintln!("Error initializing emulator: {err}");
|
.spawn_careless(move || {
|
||||||
process::exit(1);
|
let mut emulator = match builder.build() {
|
||||||
}
|
Ok(e) => e,
|
||||||
};
|
Err(err) => {
|
||||||
emulator.run();
|
eprintln!("Error initializing emulator: {err}");
|
||||||
});
|
process::exit(1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
emulator.run();
|
||||||
|
})?;
|
||||||
|
|
||||||
let event_loop = EventLoop::with_user_event().build().unwrap();
|
let event_loop = EventLoop::with_user_event().build().unwrap();
|
||||||
event_loop.set_control_flow(ControlFlow::Poll);
|
event_loop.set_control_flow(ControlFlow::Poll);
|
||||||
|
|
Loading…
Reference in New Issue