Allow Application::run to return on native platforms
This commit is contained in:
parent
2f57051283
commit
6f604ab399
1 changed files with 42 additions and 2 deletions
|
|
@ -193,7 +193,7 @@ where
|
||||||
|
|
||||||
let mut context = task::Context::from_waker(task::noop_waker_ref());
|
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;
|
use winit::event_loop::ControlFlow;
|
||||||
|
|
||||||
if let ControlFlow::Exit = control_flow {
|
if let ControlFlow::Exit = control_flow {
|
||||||
|
|
@ -225,7 +225,7 @@ where
|
||||||
task::Poll::Ready(_) => ControlFlow::Exit,
|
task::Poll::Ready(_) => ControlFlow::Exit,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn run_instance<A, E, C>(
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue