diff options
Diffstat (limited to 'winit')
-rw-r--r-- | winit/src/application.rs | 17 | ||||
-rw-r--r-- | winit/src/system.rs | 2 |
2 files changed, 12 insertions, 7 deletions
diff --git a/winit/src/application.rs b/winit/src/application.rs index 421ae398..90b03d56 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -583,14 +583,19 @@ pub fn run_command<Message: 'static + std::fmt::Debug + Send, E: Executor>( system::Action::QueryInformation(_tag) => { #[cfg(feature = "system")] { - let information = - crate::system::information(_graphics_info()); + let graphics_info = _graphics_info(); + let proxy = proxy.clone(); - let message = _tag(information); + let _ = std::thread::spawn(move || { + let information = + crate::system::information(graphics_info); - proxy - .send_event(message) - .expect("Send message to event loop"); + let message = _tag(information); + + proxy + .send_event(message) + .expect("Send message to event loop") + }); } } }, diff --git a/winit/src/system.rs b/winit/src/system.rs index fa4ad1a3..0ed61dc9 100644 --- a/winit/src/system.rs +++ b/winit/src/system.rs @@ -6,7 +6,7 @@ use iced_graphics::compositor; /// Query for available system information. pub fn fetch_information<Message>( - f: impl Fn(Information) -> Message + 'static, + f: impl Fn(Information) -> Message + Send + 'static, ) -> Command<Message> { Command::single(command::Action::System(Action::QueryInformation( Box::new(f), |