summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winit/src/program.rs20
1 files changed, 11 insertions, 9 deletions
diff --git a/winit/src/program.rs b/winit/src/program.rs
index 0e1849eb..872c8a98 100644
--- a/winit/src/program.rs
+++ b/winit/src/program.rs
@@ -320,7 +320,6 @@ where
.send(Boot {
compositor,
clipboard,
- window: window.id(),
})
.ok()
.expect("Send boot event");
@@ -601,9 +600,9 @@ where
struct Boot<C> {
compositor: C,
clipboard: Clipboard,
- window: winit::window::WindowId,
}
+#[derive(Debug)]
enum Event<Message: 'static> {
WindowCreated {
id: window::Id,
@@ -615,6 +614,7 @@ enum Event<Message: 'static> {
EventLoopAwakened(winit::event::Event<Message>),
}
+#[derive(Debug)]
enum Control {
ChangeFlow(winit::event_loop::ControlFlow),
Exit,
@@ -647,10 +647,10 @@ async fn run_instance<P, C>(
let Boot {
mut compositor,
mut clipboard,
- window: boot_window,
} = boot.try_recv().ok().flatten().expect("Receive boot");
let mut window_manager = WindowManager::new();
+ let mut boot_window_closed = false;
let mut events = Vec::new();
let mut messages = Vec::new();
@@ -926,14 +926,16 @@ async fn run_instance<P, C>(
window_event,
winit::event::WindowEvent::Destroyed
)
- && window_id != boot_window
- && window_manager.is_empty()
{
- control_sender
- .start_send(Control::Exit)
- .expect("Send control action");
+ if boot_window_closed && window_manager.is_empty() {
+ control_sender
+ .start_send(Control::Exit)
+ .expect("Send control action");
- continue;
+ continue;
+ }
+
+ boot_window_closed = true;
}
let Some((id, window)) =