From acd5c51f08417a76a223f020724d65d068556c16 Mon Sep 17 00:00:00 2001 From: marc2332 Date: Sun, 2 Feb 2025 13:41:21 +0100 Subject: [PATCH 1/2] experiment: Process queued events in about to wait --- crates/renderer/src/app.rs | 6 +++++- crates/renderer/src/renderer.rs | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/crates/renderer/src/app.rs b/crates/renderer/src/app.rs index 0ca9c4f14..71b1d9b60 100644 --- a/crates/renderer/src/app.rs +++ b/crates/renderer/src/app.rs @@ -287,8 +287,12 @@ impl Application { } /// Send an event - pub fn send_event(&mut self, event: PlatformEvent, scale_factor: f64) { + pub fn send_event(&mut self, event: PlatformEvent) { self.events.push(event); + } + + // Process queued events + pub fn flush_events(&mut self, scale_factor: f64){ self.process_events(scale_factor); } diff --git a/crates/renderer/src/renderer.rs b/crates/renderer/src/renderer.rs index a9fcd334d..771bb57af 100644 --- a/crates/renderer/src/renderer.rs +++ b/crates/renderer/src/renderer.rs @@ -118,13 +118,21 @@ impl<'a, State: Clone + 'static> DesktopRenderer<'a, State> { } } - // Send and process an event + // Send an event fn send_event(&mut self, event: PlatformEvent) { + self.state + .created_state() + .app + .send_event(event); + } + + // Process queued events + fn flush_events(&mut self) { let scale_factor = self.scale_factor(); self.state .created_state() .app - .send_event(event, scale_factor); + .flush_events(scale_factor); } /// Get the current scale factor of the Window @@ -497,6 +505,10 @@ impl<'a, State: Clone> ApplicationHandler for DesktopRenderer<'a, } } + fn about_to_wait(&mut self, _event_loop: &winit::event_loop::ActiveEventLoop) { + self.flush_events(); + } + fn exiting(&mut self, _event_loop: &winit::event_loop::ActiveEventLoop) { self.run_on_exit(); } From 1994b5f95351b17c7af124acc9bcedb13f7b991b Mon Sep 17 00:00:00 2001 From: marc2332 Date: Sun, 2 Feb 2025 13:43:56 +0100 Subject: [PATCH 2/2] fmt --- crates/renderer/src/app.rs | 2 +- crates/renderer/src/renderer.rs | 10 ++-------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/crates/renderer/src/app.rs b/crates/renderer/src/app.rs index 71b1d9b60..c4e3eeb0c 100644 --- a/crates/renderer/src/app.rs +++ b/crates/renderer/src/app.rs @@ -292,7 +292,7 @@ impl Application { } // Process queued events - pub fn flush_events(&mut self, scale_factor: f64){ + pub fn flush_events(&mut self, scale_factor: f64) { self.process_events(scale_factor); } diff --git a/crates/renderer/src/renderer.rs b/crates/renderer/src/renderer.rs index 771bb57af..e44ca3e55 100644 --- a/crates/renderer/src/renderer.rs +++ b/crates/renderer/src/renderer.rs @@ -120,19 +120,13 @@ impl<'a, State: Clone + 'static> DesktopRenderer<'a, State> { // Send an event fn send_event(&mut self, event: PlatformEvent) { - self.state - .created_state() - .app - .send_event(event); + self.state.created_state().app.send_event(event); } // Process queued events fn flush_events(&mut self) { let scale_factor = self.scale_factor(); - self.state - .created_state() - .app - .flush_events(scale_factor); + self.state.created_state().app.flush_events(scale_factor); } /// Get the current scale factor of the Window