diff options
author | 2022-01-31 16:39:46 +0700 | |
---|---|---|
committer | 2022-01-31 16:39:46 +0700 | |
commit | 6f604ab3995cb345aacf183a569589988aa3ad1f (patch) | |
tree | 6e0c9c38366c9d70204c80fc66bd8e8a7652cf52 /winit | |
parent | 2f57051283107e83a392486e8d9075f91f1b3332 (diff) | |
download | iced-6f604ab3995cb345aacf183a569589988aa3ad1f.tar.gz iced-6f604ab3995cb345aacf183a569589988aa3ad1f.tar.bz2 iced-6f604ab3995cb345aacf183a569589988aa3ad1f.zip |
Allow `Application::run` to return on native platforms
Diffstat (limited to 'winit')
-rw-r--r-- | winit/src/application.rs | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/winit/src/application.rs b/winit/src/application.rs index 7ddb9947..ed077507 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -193,7 +193,7 @@ where let mut context = task::Context::from_waker(task::noop_waker_ref()); - event_loop.run(move |event, _, control_flow| { + platform::run(event_loop, move |event, _, control_flow| { use winit::event_loop::ControlFlow; if let ControlFlow::Exit = control_flow { @@ -225,7 +225,7 @@ where task::Poll::Ready(_) => ControlFlow::Exit, }; } - }); + }) } async fn run_instance<A, E, C>( @@ -574,3 +574,43 @@ pub fn run_command<Message: 'static + std::fmt::Debug + Send, E: Executor>( } } } + +#[cfg(not(target_arch = "wasm32"))] +mod platform { + pub fn run<T, F>( + mut event_loop: winit::event_loop::EventLoop<T>, + event_handler: F, + ) -> Result<(), super::Error> + where + F: 'static + + FnMut( + winit::event::Event<'_, T>, + &winit::event_loop::EventLoopWindowTarget<T>, + &mut winit::event_loop::ControlFlow, + ), + { + use winit::platform::run_return::EventLoopExtRunReturn; + + let _ = event_loop.run_return(event_handler); + + Ok(()) + } +} + +#[cfg(target_arch = "wasm32")] +mod platform { + pub fn run<T, F>( + event_loop: winit::event_loop::EventLoop<T>, + event_handler: F, + ) -> ! + where + F: 'static + + FnMut( + winit::event::Event<'_, T>, + &winit::event_loop::EventLoopWindowTarget<T>, + &mut winit::event_loop::ControlFlow, + ), + { + event_loop.run(event_handler) + } +} |