summaryrefslogtreecommitdiffstats
path: root/winit
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-05-04 14:25:04 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-05-04 15:21:07 +0200
commitf1ec0af5070fe2752967cdc38ed66b8b70882366 (patch)
tree7bf1d4ce9c761b94a5dc7c40b265f62afb24fedf /winit
parente24f26c28f09916f04f536a52368dcd1a4f34ed4 (diff)
downloadiced-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')
-rw-r--r--winit/src/application.rs17
-rw-r--r--winit/src/system.rs2
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),