summaryrefslogtreecommitdiffstats
path: root/winit
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-08-15 01:52:45 +0200
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-08-15 01:52:45 +0200
commit7c2abc9b8b6898459be56b7b4ae197eadb7dc0ae (patch)
tree8fc39d818d248b283982988c2991bd6cc13f72c4 /winit
parent515772c9f8eeaa318bad52fd04caba4da69b075e (diff)
downloadiced-7c2abc9b8b6898459be56b7b4ae197eadb7dc0ae.tar.gz
iced-7c2abc9b8b6898459be56b7b4ae197eadb7dc0ae.tar.bz2
iced-7c2abc9b8b6898459be56b7b4ae197eadb7dc0ae.zip
Fix crash when application boots from a URL event in macOS
Diffstat (limited to 'winit')
-rw-r--r--winit/src/program.rs17
1 files changed, 14 insertions, 3 deletions
diff --git a/winit/src/program.rs b/winit/src/program.rs
index efe8a978..57cef684 100644
--- a/winit/src/program.rs
+++ b/winit/src/program.rs
@@ -650,7 +650,7 @@ async fn run_instance<P, C>(
mut runtime: Runtime<P::Executor, Proxy<P::Message>, Action<P::Message>>,
mut proxy: Proxy<P::Message>,
mut debug: Debug,
- mut boot: oneshot::Receiver<Boot<C>>,
+ boot: oneshot::Receiver<Boot<C>>,
mut event_receiver: mpsc::UnboundedReceiver<Event<Action<P::Message>>>,
mut control_sender: mpsc::UnboundedSender<Control>,
is_daemon: bool,
@@ -665,7 +665,7 @@ async fn run_instance<P, C>(
let Boot {
mut compositor,
mut clipboard,
- } = boot.try_recv().ok().flatten().expect("Receive boot");
+ } = boot.await.expect("Receive boot");
let mut window_manager = WindowManager::new();
let mut is_window_opening = !is_daemon;
@@ -679,7 +679,18 @@ async fn run_instance<P, C>(
debug.startup_finished();
- while let Some(event) = event_receiver.next().await {
+ loop {
+ // Empty the queue if possible
+ let event = if let Ok(event) = event_receiver.try_next() {
+ event
+ } else {
+ event_receiver.next().await
+ };
+
+ let Some(event) = event else {
+ break;
+ };
+
match event {
Event::WindowCreated {
id,