From ee3ab33a7c7b72983bffc494ef8a46cc3aa4f698 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Sun, 14 Jul 2024 20:51:38 +0200 Subject: [PATCH] Remove internal `ActiveEventLoop::clear_exit` How to store and clear the internal state should be internal to the implementation on each backend. --- src/platform/run_on_demand.rs | 14 ++++---------- src/platform_impl/android/mod.rs | 1 + src/platform_impl/apple/appkit/event_loop.rs | 5 +---- src/platform_impl/linux/mod.rs | 4 +--- src/platform_impl/linux/wayland/event_loop/mod.rs | 1 + src/platform_impl/linux/x11/mod.rs | 7 +++---- src/platform_impl/windows/event_loop.rs | 1 + 7 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/platform/run_on_demand.rs b/src/platform/run_on_demand.rs index 6a3c5d49..851e3450 100644 --- a/src/platform/run_on_demand.rs +++ b/src/platform/run_on_demand.rs @@ -1,8 +1,10 @@ use crate::application::ApplicationHandler; use crate::error::EventLoopError; -use crate::event_loop::{ActiveEventLoop, EventLoop}; +use crate::event_loop::EventLoop; #[cfg(doc)] -use crate::{platform::pump_events::EventLoopExtPumpEvents, window::Window}; +use crate::{ + event_loop::ActiveEventLoop, platform::pump_events::EventLoopExtPumpEvents, window::Window, +}; /// Additional methods on [`EventLoop`] to return control flow to the caller. pub trait EventLoopExtRunOnDemand { @@ -63,18 +65,10 @@ pub trait EventLoopExtRunOnDemand { impl EventLoopExtRunOnDemand for EventLoop { fn run_app_on_demand(&mut self, app: A) -> Result<(), EventLoopError> { - self.event_loop.window_target().clear_exit(); self.event_loop.run_app_on_demand(app) } } -impl ActiveEventLoop { - /// Clear exit status. - pub(crate) fn clear_exit(&self) { - self.p.clear_exit() - } -} - /// ```compile_fail /// use winit::event_loop::EventLoop; /// use winit::platform::run_on_demand::EventLoopExtRunOnDemand; diff --git a/src/platform_impl/android/mod.rs b/src/platform_impl/android/mod.rs index 9bb78302..badbc3c5 100644 --- a/src/platform_impl/android/mod.rs +++ b/src/platform_impl/android/mod.rs @@ -425,6 +425,7 @@ impl EventLoop { &mut self, mut app: A, ) -> Result<(), EventLoopError> { + self.window_target.p.clear_exit(); loop { match self.pump_app_events(None, &mut app) { PumpStatus::Exit(0) => { diff --git a/src/platform_impl/apple/appkit/event_loop.rs b/src/platform_impl/apple/appkit/event_loop.rs index 8b0fdbc4..c587f75b 100644 --- a/src/platform_impl/apple/appkit/event_loop.rs +++ b/src/platform_impl/apple/appkit/event_loop.rs @@ -129,10 +129,6 @@ impl ActiveEventLoop { self.delegate.exit() } - pub(crate) fn clear_exit(&self) { - self.delegate.clear_exit() - } - pub(crate) fn exiting(&self) -> bool { self.delegate.exiting() } @@ -255,6 +251,7 @@ impl EventLoop { &mut self, mut app: A, ) -> Result<(), EventLoopError> { + self.delegate.clear_exit(); self.delegate.set_event_handler(&mut app, || { autoreleasepool(|_| { // clear / normalize pump_events state diff --git a/src/platform_impl/linux/mod.rs b/src/platform_impl/linux/mod.rs index b7e612c4..dd4d4c20 100644 --- a/src/platform_impl/linux/mod.rs +++ b/src/platform_impl/linux/mod.rs @@ -904,7 +904,7 @@ impl ActiveEventLoop { x11_or_wayland!(match self; Self(evlp) => evlp.control_flow()) } - pub(crate) fn clear_exit(&self) { + fn clear_exit(&self) { x11_or_wayland!(match self; Self(evlp) => evlp.clear_exit()) } @@ -925,12 +925,10 @@ impl ActiveEventLoop { } } - #[allow(dead_code)] fn set_exit_code(&self, code: i32) { x11_or_wayland!(match self; Self(evlp) => evlp.set_exit_code(code)) } - #[allow(dead_code)] fn exit_code(&self) -> Option { x11_or_wayland!(match self; Self(evlp) => evlp.exit_code()) } diff --git a/src/platform_impl/linux/wayland/event_loop/mod.rs b/src/platform_impl/linux/wayland/event_loop/mod.rs index f7ac6136..e93e4793 100644 --- a/src/platform_impl/linux/wayland/event_loop/mod.rs +++ b/src/platform_impl/linux/wayland/event_loop/mod.rs @@ -168,6 +168,7 @@ impl EventLoop { &mut self, mut app: A, ) -> Result<(), EventLoopError> { + self.window_target.p.clear_exit(); let exit = loop { match self.pump_app_events(None, &mut app) { PumpStatus::Exit(0) => { diff --git a/src/platform_impl/linux/x11/mod.rs b/src/platform_impl/linux/x11/mod.rs index e39228f2..cd4b4b9e 100644 --- a/src/platform_impl/linux/x11/mod.rs +++ b/src/platform_impl/linux/x11/mod.rs @@ -375,6 +375,7 @@ impl EventLoop { &mut self, mut app: A, ) -> Result<(), EventLoopError> { + self.event_processor.target.p.clear_exit(); let exit = loop { match self.pump_app_events(None, &mut app) { PumpStatus::Exit(0) => { @@ -600,13 +601,11 @@ impl EventLoop { } fn set_exit_code(&self, code: i32) { - let window_target = EventProcessor::window_target(&self.event_processor.target); - window_target.set_exit_code(code); + self.window_target().p.set_exit_code(code); } fn exit_code(&self) -> Option { - let window_target = EventProcessor::window_target(&self.event_processor.target); - window_target.exit_code() + self.window_target().p.exit_code() } } diff --git a/src/platform_impl/windows/event_loop.rs b/src/platform_impl/windows/event_loop.rs index f9ad3fad..c17c6207 100644 --- a/src/platform_impl/windows/event_loop.rs +++ b/src/platform_impl/windows/event_loop.rs @@ -195,6 +195,7 @@ impl EventLoop { &mut self, mut app: A, ) -> Result<(), EventLoopError> { + self.window_target.p.clear_exit(); { let runner = &self.window_target.p.runner_shared;