diff options
-rw-r--r-- | glutin/src/application.rs | 7 | ||||
-rw-r--r-- | src/application.rs | 5 | ||||
-rw-r--r-- | winit/src/application.rs | 9 |
3 files changed, 14 insertions, 7 deletions
diff --git a/glutin/src/application.rs b/glutin/src/application.rs index 5d10e96a..a1165de3 100644 --- a/glutin/src/application.rs +++ b/glutin/src/application.rs @@ -28,12 +28,13 @@ where use futures::task; use futures::Future; use glutin::event_loop::EventLoop; + use glutin::platform::run_return::EventLoopExtRunReturn; use glutin::ContextBuilder; let mut debug = Debug::new(); debug.startup_started(); - let event_loop = EventLoop::with_user_event(); + let mut event_loop = EventLoop::with_user_event(); let mut proxy = event_loop.create_proxy(); let mut runtime = { @@ -115,7 +116,7 @@ where let mut context = task::Context::from_waker(task::noop_waker_ref()); - event_loop.run(move |event, _, control_flow| { + event_loop.run_return(move |event, _, control_flow| { use glutin::event_loop::ControlFlow; if let ControlFlow::Exit = control_flow { @@ -148,6 +149,8 @@ where }; } }); + + Ok(()) } async fn run_instance<A, E, C>( diff --git a/src/application.rs b/src/application.rs index af04215e..b722c8a3 100644 --- a/src/application.rs +++ b/src/application.rs @@ -188,9 +188,10 @@ pub trait Application: Sized { /// Runs the [`Application`]. /// /// On native platforms, this method will take control of the current thread - /// and __will NOT return__ unless there is an [`Error`] during startup. + /// until the [`Application`] exits. /// - /// It should probably be that last thing you call in your `main` function. + /// On the web platform, this method __will NOT return__ unless there is an + /// [`Error`] during startup. /// /// [`Error`]: crate::Error fn run(settings: Settings<Self::Flags>) -> crate::Result diff --git a/winit/src/application.rs b/winit/src/application.rs index 9ae1364d..32423e80 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -115,11 +115,12 @@ where use futures::task; use futures::Future; use winit::event_loop::EventLoop; + use winit::platform::run_return::EventLoopExtRunReturn; let mut debug = Debug::new(); debug.startup_started(); - let event_loop = EventLoop::with_user_event(); + let mut event_loop = EventLoop::with_user_event(); let mut proxy = event_loop.create_proxy(); let mut runtime = { @@ -178,7 +179,7 @@ where let mut context = task::Context::from_waker(task::noop_waker_ref()); - event_loop.run(move |event, _, control_flow| { + event_loop.run_return(move |event, _, control_flow| { use winit::event_loop::ControlFlow; if let ControlFlow::Exit = control_flow { @@ -211,6 +212,8 @@ where }; } }); + + Ok(()) } async fn run_instance<A, E, C>( @@ -401,7 +404,7 @@ async fn run_instance<A, E, C>( Err(error) => match error { // This is an unrecoverable error. window::SurfaceError::OutOfMemory => { - panic!("{}", error); + panic!("{:?}", error); } _ => { debug.render_finished(); |