diff options
author | 2022-05-04 14:25:04 +0200 | |
---|---|---|
committer | 2022-05-04 15:21:07 +0200 | |
commit | f1ec0af5070fe2752967cdc38ed66b8b70882366 (patch) | |
tree | 7bf1d4ce9c761b94a5dc7c40b265f62afb24fedf /winit/src/application.rs | |
parent | e24f26c28f09916f04f536a52368dcd1a4f34ed4 (diff) | |
download | iced-f1ec0af5070fe2752967cdc38ed66b8b70882366.tar.gz iced-f1ec0af5070fe2752967cdc38ed66b8b70882366.tar.bz2 iced-f1ec0af5070fe2752967cdc38ed66b8b70882366.zip |
Run `system::information` in a different thread
... since it seems it can block for a couple of seconds.
Diffstat (limited to 'winit/src/application.rs')
-rw-r--r-- | winit/src/application.rs | 17 |
1 files changed, 11 insertions, 6 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") + }); } } }, |