Render images on background thread to keep UI responsive

This commit is contained in:
2025-02-15 18:33:18 -05:00
parent a82389224f
commit a461faf89d
5 changed files with 337 additions and 163 deletions
+6 -2
View File
@@ -20,6 +20,7 @@ use crate::{
input::MappingProvider,
memory::MemoryMonitor,
persistence::Persistence,
vram::VramProcessor,
window::{
AboutWindow, AppWindow, BgMapWindow, CharacterDataWindow, GameWindow, GdbServerWindow,
InputWindow,
@@ -45,6 +46,7 @@ pub struct Application {
mappings: MappingProvider,
controllers: ControllerManager,
memory: MemoryMonitor,
vram: VramProcessor,
persistence: Persistence,
viewports: HashMap<ViewportId, Viewport>,
focused: Option<ViewportId>,
@@ -63,6 +65,7 @@ impl Application {
let mappings = MappingProvider::new(persistence.clone());
let controllers = ControllerManager::new(client.clone(), &mappings);
let memory = MemoryMonitor::new(client.clone());
let vram = VramProcessor::new();
{
let mappings = mappings.clone();
let proxy = proxy.clone();
@@ -75,6 +78,7 @@ impl Application {
proxy,
mappings,
memory,
vram,
controllers,
persistence,
viewports: HashMap::new(),
@@ -205,11 +209,11 @@ impl ApplicationHandler<UserEvent> for Application {
self.open(event_loop, Box::new(about));
}
UserEvent::OpenCharacterData(sim_id) => {
let vram = CharacterDataWindow::new(sim_id, &mut self.memory);
let vram = CharacterDataWindow::new(sim_id, &mut self.memory, &mut self.vram);
self.open(event_loop, Box::new(vram));
}
UserEvent::OpenBgMap(sim_id) => {
let bgmap = BgMapWindow::new(sim_id, &mut self.memory);
let bgmap = BgMapWindow::new(sim_id, &mut self.memory, &mut self.vram);
self.open(event_loop, Box::new(bgmap));
}
UserEvent::OpenDebugger(sim_id) => {