diff --git a/src/platform/run_on_demand.rs b/src/platform/run_on_demand.rs index 6a3c5d493a..851e3450fc 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 9bb7830262..badbc3c504 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 8b0fdbc4fb..c587f75b26 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 b7e612c4b5..dd4d4c20d6 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 f7ac61364e..e93e47939a 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 e39228f243..cd4b4b9e78 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 f9ad3fad8c..c17c620779 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;