From 1e62fdf069db5687be510e1cc375260bbff318a7 Mon Sep 17 00:00:00 2001 From: Richard Date: Thu, 27 Jan 2022 04:00:53 -0300 Subject: Introduce `Error::ContextCreationFailed` --- winit/src/error.rs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'winit') diff --git a/winit/src/error.rs b/winit/src/error.rs index 8e1d20e8..2dd045d2 100644 --- a/winit/src/error.rs +++ b/winit/src/error.rs @@ -11,17 +11,13 @@ pub enum Error { #[error("the application window could not be created")] WindowCreationFailed(winit::error::OsError), - /// A suitable graphics adapter or device could not be found. - #[error("a suitable graphics adapter or device could not be found")] - GraphicsAdapterNotFound, + /// The application context could not be created. + #[error("the application context could not be created")] + ContextCreationFailed(iced_graphics::Error), } impl From for Error { fn from(error: iced_graphics::Error) -> Error { - match error { - iced_graphics::Error::AdapterNotFound => { - Error::GraphicsAdapterNotFound - } - } + Error::ContextCreationFailed(error) } } -- cgit From 764b424dfc2b2163f21483a6d1f05ea1da62c561 Mon Sep 17 00:00:00 2001 From: Richard Date: Thu, 27 Jan 2022 06:02:19 -0300 Subject: Add logging to window and context creation --- winit/src/application.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'winit') diff --git a/winit/src/application.rs b/winit/src/application.rs index ed077507..6f2ea1a5 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -137,14 +137,16 @@ where let subscription = application.subscription(); - let window = settings - .window - .into_builder( - &application.title(), - application.mode(), - event_loop.primary_monitor(), - settings.id, - ) + let builder = settings.window.into_builder( + &application.title(), + application.mode(), + event_loop.primary_monitor(), + settings.id, + ); + + log::info!("Window builder: {:#?}", builder); + + let window = builder .build(&event_loop) .map_err(Error::WindowCreationFailed)?; -- cgit From 6e937131970d1e7b32204096e5f6c67de3fe6dfb Mon Sep 17 00:00:00 2001 From: Richard Date: Wed, 16 Feb 2022 19:11:42 -0300 Subject: Add `sysinfo` crate through feature flag --- winit/Cargo.toml | 1 + 1 file changed, 1 insertion(+) (limited to 'winit') diff --git a/winit/Cargo.toml b/winit/Cargo.toml index f7232248..b7583149 100644 --- a/winit/Cargo.toml +++ b/winit/Cargo.toml @@ -17,6 +17,7 @@ debug = ["iced_native/debug"] window_clipboard = "0.2" log = "0.4" thiserror = "1.0" +sysinfo = { version = "0.23", optional = true } [dependencies.winit] version = "0.26" -- cgit From fed8da1c9078638a96ae57a9dd6edacb0a1936b3 Mon Sep 17 00:00:00 2001 From: Richard Date: Wed, 16 Feb 2022 19:20:26 -0300 Subject: Add new `System` variant to `Action` --- winit/src/application.rs | 1 + 1 file changed, 1 insertion(+) (limited to 'winit') diff --git a/winit/src/application.rs b/winit/src/application.rs index 6f2ea1a5..33f53315 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -573,6 +573,7 @@ pub fn run_command( }); } }, + command::Action::System(_action) => {} } } } -- cgit From 6295a72aa66381af9567b0b25e22d960ac672998 Mon Sep 17 00:00:00 2001 From: Richard Date: Tue, 8 Mar 2022 19:49:03 -0300 Subject: Implement `QueryInformation` for `iced_winit` --- winit/src/application.rs | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'winit') diff --git a/winit/src/application.rs b/winit/src/application.rs index 33f53315..d184c0c3 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -540,6 +540,7 @@ pub fn run_command( window: &winit::window::Window, ) { use iced_native::command; + use iced_native::system; use iced_native::window; for action in command.actions() { @@ -573,7 +574,49 @@ pub fn run_command( }); } }, - command::Action::System(_action) => {} + command::Action::System(action) => match action { + system::Action::QueryInformation(tag) => { + #[cfg(feature = "sysinfo")] + let information = { + use sysinfo::{ProcessorExt, System, SystemExt}; + let mut system = System::new_all(); + system.refresh_all(); + + let cpu = system.global_processor_info(); + let unknown = String::from("unknown"); + + let information = system::Information { + system_name: system + .name() + .unwrap_or(unknown.clone()), + system_kernel: system + .kernel_version() + .unwrap_or(unknown.clone()), + system_version: system + .long_os_version() + .unwrap_or(unknown.clone()), + cpu_brand: cpu.brand().into(), + cpu_vendor: cpu.vendor_id().into(), + cpu_name: cpu.name().into(), + cpu_cores: system + .physical_core_count() + .map_or(unknown, |cores| cores.to_string()), + memory_total: system.total_memory().to_string(), + }; + + Some(information) + }; + + #[cfg(not(feature = "sysinfo"))] + let information = None; + + let message = tag(information); + + proxy + .send_event(message) + .expect("Send message to event loop"); + } + }, } } } -- cgit From c2f45a192fdeba5eec79158dda8640a99a36fdb1 Mon Sep 17 00:00:00 2001 From: Richard Date: Tue, 8 Mar 2022 19:58:34 -0300 Subject: Turn `Information` fields `pub` --- winit/src/application.rs | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) (limited to 'winit') diff --git a/winit/src/application.rs b/winit/src/application.rs index d184c0c3..b2f9be29 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -583,25 +583,16 @@ pub fn run_command( system.refresh_all(); let cpu = system.global_processor_info(); - let unknown = String::from("unknown"); let information = system::Information { - system_name: system - .name() - .unwrap_or(unknown.clone()), - system_kernel: system - .kernel_version() - .unwrap_or(unknown.clone()), - system_version: system - .long_os_version() - .unwrap_or(unknown.clone()), + system_name: system.name(), + system_kernel: system.kernel_version(), + system_version: system.long_os_version(), cpu_brand: cpu.brand().into(), cpu_vendor: cpu.vendor_id().into(), cpu_name: cpu.name().into(), - cpu_cores: system - .physical_core_count() - .map_or(unknown, |cores| cores.to_string()), - memory_total: system.total_memory().to_string(), + cpu_cores: system.physical_core_count(), + memory_total: system.total_memory(), }; Some(information) -- cgit From 0b36a55196300371343a1614cec61ac041f160f4 Mon Sep 17 00:00:00 2001 From: Richard Date: Thu, 10 Mar 2022 01:56:25 -0300 Subject: Add function helper in `iced_winit::system` --- winit/src/lib.rs | 1 + winit/src/system.rs | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 winit/src/system.rs (limited to 'winit') diff --git a/winit/src/lib.rs b/winit/src/lib.rs index b31adf6e..2b5bb2ff 100644 --- a/winit/src/lib.rs +++ b/winit/src/lib.rs @@ -31,6 +31,7 @@ pub mod application; pub mod clipboard; pub mod conversion; pub mod settings; +pub mod system; pub mod window; mod error; diff --git a/winit/src/system.rs b/winit/src/system.rs new file mode 100644 index 00000000..cd3ba075 --- /dev/null +++ b/winit/src/system.rs @@ -0,0 +1,14 @@ +//! Access the native system. +use crate::command::{self, Command}; +use iced_native::system; + +/// Query for available system information. +/// +/// Returns `None` if not using the `sysinfo` feature flag. +pub fn information( + f: impl Fn(Option) -> Message + 'static, +) -> Command { + Command::single(command::Action::System(system::Action::QueryInformation( + Box::new(f), + ))) +} -- cgit From c8ed318e17c8a7673e4260e5d4e12c44c9faa987 Mon Sep 17 00:00:00 2001 From: Richard Date: Thu, 10 Mar 2022 03:01:12 -0300 Subject: Export new `system` module --- winit/src/system.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'winit') diff --git a/winit/src/system.rs b/winit/src/system.rs index cd3ba075..3d1b4022 100644 --- a/winit/src/system.rs +++ b/winit/src/system.rs @@ -1,14 +1,14 @@ //! Access the native system. use crate::command::{self, Command}; -use iced_native::system; +pub use iced_native::system::*; /// Query for available system information. /// /// Returns `None` if not using the `sysinfo` feature flag. pub fn information( - f: impl Fn(Option) -> Message + 'static, + f: impl Fn(Option) -> Message + 'static, ) -> Command { - Command::single(command::Action::System(system::Action::QueryInformation( + Command::single(command::Action::System(Action::QueryInformation( Box::new(f), ))) } -- cgit From 53538b65b1c557015c2900fc28b8916cf719a10b Mon Sep 17 00:00:00 2001 From: Richard Date: Thu, 10 Mar 2022 03:02:17 -0300 Subject: Add `system_information` example --- winit/src/application.rs | 2 -- 1 file changed, 2 deletions(-) (limited to 'winit') diff --git a/winit/src/application.rs b/winit/src/application.rs index b2f9be29..f5a58f2f 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -589,8 +589,6 @@ pub fn run_command( system_kernel: system.kernel_version(), system_version: system.long_os_version(), cpu_brand: cpu.brand().into(), - cpu_vendor: cpu.vendor_id().into(), - cpu_name: cpu.name().into(), cpu_cores: system.physical_core_count(), memory_total: system.total_memory(), }; -- cgit From 83ab27b5cbb20de79e532687a342a5f4036e3046 Mon Sep 17 00:00:00 2001 From: Richard Date: Thu, 17 Mar 2022 00:59:35 -0300 Subject: Add graphics information to `iced_winit` --- winit/src/application.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'winit') diff --git a/winit/src/application.rs b/winit/src/application.rs index f5a58f2f..9d65d769 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -167,17 +167,18 @@ where let mut clipboard = Clipboard::connect(&window); + let (compositor, renderer) = C::new(compositor_settings, Some(&window))?; + run_command( init_command, &mut runtime, &mut clipboard, &mut proxy, &window, + &compositor.get_information(), ); runtime.track(subscription); - let (compositor, renderer) = C::new(compositor_settings, Some(&window))?; - let (mut sender, receiver) = mpsc::unbounded(); let mut instance = Box::pin(run_instance::( @@ -262,6 +263,8 @@ async fn run_instance( physical_size.height, ); + let graphics_info = compositor.get_information(); + let mut user_interface = ManuallyDrop::new(build_user_interface( &mut application, user_interface::Cache::default(), @@ -317,6 +320,7 @@ async fn run_instance( &mut debug, &mut messages, &window, + &graphics_info, ); // Update window @@ -516,6 +520,7 @@ pub fn update( debug: &mut Debug, messages: &mut Vec, window: &winit::window::Window, + graphics_info: &window::GraphicsInformation, ) { for message in messages.drain(..) { debug.log_message(&message); @@ -524,7 +529,7 @@ pub fn update( let command = runtime.enter(|| application.update(message)); debug.update_finished(); - run_command(command, runtime, clipboard, proxy, window); + run_command(command, runtime, clipboard, proxy, window, graphics_info); } let subscription = application.subscription(); @@ -538,6 +543,7 @@ pub fn run_command( clipboard: &mut Clipboard, proxy: &mut winit::event_loop::EventLoopProxy, window: &winit::window::Window, + graphics_info: &window::GraphicsInformation, ) { use iced_native::command; use iced_native::system; @@ -591,6 +597,8 @@ pub fn run_command( cpu_brand: cpu.brand().into(), cpu_cores: system.physical_core_count(), memory_total: system.total_memory(), + graphics_adapter: graphics_info.adapter.clone(), + graphics_backend: graphics_info.backend.clone(), }; Some(information) -- cgit From c9ea1f11dec96df04ade463ea9f33062a85c9219 Mon Sep 17 00:00:00 2001 From: Richard Date: Thu, 14 Apr 2022 02:11:43 -0300 Subject: Add memory usage to `Information` struct --- winit/src/application.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'winit') diff --git a/winit/src/application.rs b/winit/src/application.rs index 9d65d769..1865f344 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -584,12 +584,21 @@ pub fn run_command( system::Action::QueryInformation(tag) => { #[cfg(feature = "sysinfo")] let information = { - use sysinfo::{ProcessorExt, System, SystemExt}; + use sysinfo::{ + ProcessExt, ProcessorExt, System, SystemExt, + }; let mut system = System::new_all(); system.refresh_all(); let cpu = system.global_processor_info(); + let memory_used = sysinfo::get_current_pid() + .and_then(|pid| { + system.process(pid).ok_or("Process not found") + }) + .and_then(|process| Ok(process.memory())) + .ok(); + let information = system::Information { system_name: system.name(), system_kernel: system.kernel_version(), @@ -597,6 +606,7 @@ pub fn run_command( cpu_brand: cpu.brand().into(), cpu_cores: system.physical_core_count(), memory_total: system.total_memory(), + memory_used, graphics_adapter: graphics_info.adapter.clone(), graphics_backend: graphics_info.backend.clone(), }; -- cgit From 053f352f68863e31a4576b8462a54b4e65f629d9 Mon Sep 17 00:00:00 2001 From: Richard Date: Thu, 14 Apr 2022 11:15:54 -0300 Subject: Introduce `get_information` --- winit/src/application.rs | 36 ++---------------------------------- winit/src/system.rs | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 34 deletions(-) (limited to 'winit') diff --git a/winit/src/application.rs b/winit/src/application.rs index 1865f344..37a0d584 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -582,40 +582,8 @@ pub fn run_command( }, command::Action::System(action) => match action { system::Action::QueryInformation(tag) => { - #[cfg(feature = "sysinfo")] - let information = { - use sysinfo::{ - ProcessExt, ProcessorExt, System, SystemExt, - }; - let mut system = System::new_all(); - system.refresh_all(); - - let cpu = system.global_processor_info(); - - let memory_used = sysinfo::get_current_pid() - .and_then(|pid| { - system.process(pid).ok_or("Process not found") - }) - .and_then(|process| Ok(process.memory())) - .ok(); - - let information = system::Information { - system_name: system.name(), - system_kernel: system.kernel_version(), - system_version: system.long_os_version(), - cpu_brand: cpu.brand().into(), - cpu_cores: system.physical_core_count(), - memory_total: system.total_memory(), - memory_used, - graphics_adapter: graphics_info.adapter.clone(), - graphics_backend: graphics_info.backend.clone(), - }; - - Some(information) - }; - - #[cfg(not(feature = "sysinfo"))] - let information = None; + let information = + crate::system::get_information(graphics_info); let message = tag(information); diff --git a/winit/src/system.rs b/winit/src/system.rs index 3d1b4022..7e1c17c8 100644 --- a/winit/src/system.rs +++ b/winit/src/system.rs @@ -2,6 +2,8 @@ use crate::command::{self, Command}; pub use iced_native::system::*; +use iced_graphics::window; + /// Query for available system information. /// /// Returns `None` if not using the `sysinfo` feature flag. @@ -12,3 +14,40 @@ pub fn information( Box::new(f), ))) } + +#[cfg(feature = "sysinfo")] +pub(crate) fn get_information( + graphics_info: &window::GraphicsInformation, +) -> Option { + use sysinfo::{ProcessExt, ProcessorExt, System, SystemExt}; + let mut system = System::new_all(); + system.refresh_all(); + + let cpu = system.global_processor_info(); + + let memory_used = sysinfo::get_current_pid() + .and_then(|pid| system.process(pid).ok_or("Process not found")) + .and_then(|process| Ok(process.memory())) + .ok(); + + let information = Information { + system_name: system.name(), + system_kernel: system.kernel_version(), + system_version: system.long_os_version(), + cpu_brand: cpu.brand().into(), + cpu_cores: system.physical_core_count(), + memory_total: system.total_memory(), + memory_used, + graphics_adapter: graphics_info.adapter.clone(), + graphics_backend: graphics_info.backend.clone(), + }; + + Some(information) +} + +#[cfg(not(feature = "sysinfo"))] +pub(crate) fn get_information( + _graphics_info: &window::GraphicsInformation, +) -> Option { + None +} -- cgit From 5be1ac18fe1757d31386f98774d823bd1137eea4 Mon Sep 17 00:00:00 2001 From: Richard Date: Tue, 26 Apr 2022 19:09:09 -0300 Subject: Rename `GraphicsInformation` to `Information` --- winit/src/application.rs | 4 ++-- winit/src/system.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'winit') diff --git a/winit/src/application.rs b/winit/src/application.rs index 37a0d584..f5e4c66d 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -520,7 +520,7 @@ pub fn update( debug: &mut Debug, messages: &mut Vec, window: &winit::window::Window, - graphics_info: &window::GraphicsInformation, + graphics_info: &window::Information, ) { for message in messages.drain(..) { debug.log_message(&message); @@ -543,7 +543,7 @@ pub fn run_command( clipboard: &mut Clipboard, proxy: &mut winit::event_loop::EventLoopProxy, window: &winit::window::Window, - graphics_info: &window::GraphicsInformation, + graphics_info: &window::Information, ) { use iced_native::command; use iced_native::system; diff --git a/winit/src/system.rs b/winit/src/system.rs index 7e1c17c8..1305ba5b 100644 --- a/winit/src/system.rs +++ b/winit/src/system.rs @@ -17,7 +17,7 @@ pub fn information( #[cfg(feature = "sysinfo")] pub(crate) fn get_information( - graphics_info: &window::GraphicsInformation, + graphics_info: &window::Information, ) -> Option { use sysinfo::{ProcessExt, ProcessorExt, System, SystemExt}; let mut system = System::new_all(); @@ -47,7 +47,7 @@ pub(crate) fn get_information( #[cfg(not(feature = "sysinfo"))] pub(crate) fn get_information( - _graphics_info: &window::GraphicsInformation, + _graphics_info: &window::Information, ) -> Option { None } -- cgit From 984d1f375ecec301dd42b049eecd1b88e3bca32a Mon Sep 17 00:00:00 2001 From: Richard Date: Tue, 26 Apr 2022 19:18:18 -0300 Subject: Move `compositor` module access from `window` to `crate` --- winit/src/application.rs | 7 ++++--- winit/src/system.rs | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'winit') diff --git a/winit/src/application.rs b/winit/src/application.rs index f5e4c66d..853ede0c 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -13,6 +13,7 @@ use crate::{ use iced_futures::futures; use iced_futures::futures::channel::mpsc; +use iced_graphics::compositor; use iced_graphics::window; use iced_native::program::Program; use iced_native::user_interface::{self, UserInterface}; @@ -426,7 +427,7 @@ async fn run_instance( } Err(error) => match error { // This is an unrecoverable error. - window::SurfaceError::OutOfMemory => { + compositor::SurfaceError::OutOfMemory => { panic!("{:?}", error); } _ => { @@ -520,7 +521,7 @@ pub fn update( debug: &mut Debug, messages: &mut Vec, window: &winit::window::Window, - graphics_info: &window::Information, + graphics_info: &compositor::Information, ) { for message in messages.drain(..) { debug.log_message(&message); @@ -543,7 +544,7 @@ pub fn run_command( clipboard: &mut Clipboard, proxy: &mut winit::event_loop::EventLoopProxy, window: &winit::window::Window, - graphics_info: &window::Information, + graphics_info: &compositor::Information, ) { use iced_native::command; use iced_native::system; diff --git a/winit/src/system.rs b/winit/src/system.rs index 1305ba5b..a961c5b4 100644 --- a/winit/src/system.rs +++ b/winit/src/system.rs @@ -2,7 +2,7 @@ use crate::command::{self, Command}; pub use iced_native::system::*; -use iced_graphics::window; +use iced_graphics::compositor; /// Query for available system information. /// @@ -17,7 +17,7 @@ pub fn information( #[cfg(feature = "sysinfo")] pub(crate) fn get_information( - graphics_info: &window::Information, + graphics_info: &compositor::Information, ) -> Option { use sysinfo::{ProcessExt, ProcessorExt, System, SystemExt}; let mut system = System::new_all(); @@ -47,7 +47,7 @@ pub(crate) fn get_information( #[cfg(not(feature = "sysinfo"))] pub(crate) fn get_information( - _graphics_info: &window::Information, + _graphics_info: &compositor::Information, ) -> Option { None } -- cgit From 005e516b5e1e8bb22f2da8524ffe4529f3b60ba1 Mon Sep 17 00:00:00 2001 From: Richard Date: Tue, 26 Apr 2022 19:20:38 -0300 Subject: Rename `get_information` to `fetch_information` --- winit/src/application.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'winit') diff --git a/winit/src/application.rs b/winit/src/application.rs index 853ede0c..59f0624c 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -176,7 +176,7 @@ where &mut clipboard, &mut proxy, &window, - &compositor.get_information(), + &compositor.fetch_information(), ); runtime.track(subscription); @@ -264,7 +264,7 @@ async fn run_instance( physical_size.height, ); - let graphics_info = compositor.get_information(); + let graphics_info = compositor.fetch_information(); let mut user_interface = ManuallyDrop::new(build_user_interface( &mut application, -- cgit From 18ecec2bbd9478151b8c65df0644278a174d0847 Mon Sep 17 00:00:00 2001 From: Richard Date: Tue, 26 Apr 2022 19:28:04 -0300 Subject: Change `ContextCreationFailed` to `GraphicsCreationFailed` --- winit/src/error.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'winit') diff --git a/winit/src/error.rs b/winit/src/error.rs index 2dd045d2..eaeafd51 100644 --- a/winit/src/error.rs +++ b/winit/src/error.rs @@ -11,13 +11,13 @@ pub enum Error { #[error("the application window could not be created")] WindowCreationFailed(winit::error::OsError), - /// The application context could not be created. - #[error("the application context could not be created")] - ContextCreationFailed(iced_graphics::Error), + /// The application graphics context could not be created. + #[error("the application graphics context could not be created")] + GraphicsCreationFailed(iced_graphics::Error), } impl From for Error { fn from(error: iced_graphics::Error) -> Error { - Error::ContextCreationFailed(error) + Error::GraphicsCreationFailed(error) } } -- cgit From 8643fbef90fc16371e27ae0142eb7e4c6b432d29 Mon Sep 17 00:00:00 2001 From: Richard Date: Tue, 26 Apr 2022 19:35:43 -0300 Subject: Rename `system::information` to `fetch_information` --- winit/src/system.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'winit') diff --git a/winit/src/system.rs b/winit/src/system.rs index a961c5b4..f5f68593 100644 --- a/winit/src/system.rs +++ b/winit/src/system.rs @@ -7,7 +7,7 @@ use iced_graphics::compositor; /// Query for available system information. /// /// Returns `None` if not using the `sysinfo` feature flag. -pub fn information( +pub fn fetch_information( f: impl Fn(Option) -> Message + 'static, ) -> Command { Command::single(command::Action::System(Action::QueryInformation( -- cgit From 6e167675d6a51a8a78d93439719ebffe35dcfdef Mon Sep 17 00:00:00 2001 From: Richard Date: Wed, 27 Apr 2022 15:40:29 -0300 Subject: Use closure internally to fetch `graphics_info` --- winit/src/application.rs | 12 +++++------- winit/src/system.rs | 8 ++++---- 2 files changed, 9 insertions(+), 11 deletions(-) (limited to 'winit') diff --git a/winit/src/application.rs b/winit/src/application.rs index 59f0624c..9d881475 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -176,7 +176,7 @@ where &mut clipboard, &mut proxy, &window, - &compositor.fetch_information(), + || compositor.fetch_information(), ); runtime.track(subscription); @@ -264,8 +264,6 @@ async fn run_instance( physical_size.height, ); - let graphics_info = compositor.fetch_information(); - let mut user_interface = ManuallyDrop::new(build_user_interface( &mut application, user_interface::Cache::default(), @@ -321,7 +319,7 @@ async fn run_instance( &mut debug, &mut messages, &window, - &graphics_info, + || compositor.fetch_information(), ); // Update window @@ -521,7 +519,7 @@ pub fn update( debug: &mut Debug, messages: &mut Vec, window: &winit::window::Window, - graphics_info: &compositor::Information, + graphics_info: impl FnOnce() -> compositor::Information + Copy, ) { for message in messages.drain(..) { debug.log_message(&message); @@ -544,7 +542,7 @@ pub fn run_command( clipboard: &mut Clipboard, proxy: &mut winit::event_loop::EventLoopProxy, window: &winit::window::Window, - graphics_info: &compositor::Information, + graphics_info: impl FnOnce() -> compositor::Information + Copy, ) { use iced_native::command; use iced_native::system; @@ -584,7 +582,7 @@ pub fn run_command( command::Action::System(action) => match action { system::Action::QueryInformation(tag) => { let information = - crate::system::get_information(graphics_info); + crate::system::get_information(graphics_info()); let message = tag(information); diff --git a/winit/src/system.rs b/winit/src/system.rs index f5f68593..beda2bdd 100644 --- a/winit/src/system.rs +++ b/winit/src/system.rs @@ -17,7 +17,7 @@ pub fn fetch_information( #[cfg(feature = "sysinfo")] pub(crate) fn get_information( - graphics_info: &compositor::Information, + graphics_info: compositor::Information, ) -> Option { use sysinfo::{ProcessExt, ProcessorExt, System, SystemExt}; let mut system = System::new_all(); @@ -38,8 +38,8 @@ pub(crate) fn get_information( cpu_cores: system.physical_core_count(), memory_total: system.total_memory(), memory_used, - graphics_adapter: graphics_info.adapter.clone(), - graphics_backend: graphics_info.backend.clone(), + graphics_adapter: graphics_info.adapter, + graphics_backend: graphics_info.backend, }; Some(information) @@ -47,7 +47,7 @@ pub(crate) fn get_information( #[cfg(not(feature = "sysinfo"))] pub(crate) fn get_information( - _graphics_info: &compositor::Information, + _graphics_info: compositor::Information, ) -> Option { None } -- cgit From 5eefa5d4ead9ebfac7dab1db9aebf9797d2dad38 Mon Sep 17 00:00:00 2001 From: Richard Date: Wed, 27 Apr 2022 16:18:27 -0300 Subject: Simplify the `QueryInformation` Action --- winit/Cargo.toml | 2 +- winit/src/application.rs | 2 +- winit/src/system.rs | 22 +++++----------------- 3 files changed, 7 insertions(+), 19 deletions(-) (limited to 'winit') diff --git a/winit/Cargo.toml b/winit/Cargo.toml index b7583149..f5478e73 100644 --- a/winit/Cargo.toml +++ b/winit/Cargo.toml @@ -17,7 +17,7 @@ debug = ["iced_native/debug"] window_clipboard = "0.2" log = "0.4" thiserror = "1.0" -sysinfo = { version = "0.23", optional = true } +sysinfo = "0.23" [dependencies.winit] version = "0.26" diff --git a/winit/src/application.rs b/winit/src/application.rs index 9d881475..04dd55f1 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -582,7 +582,7 @@ pub fn run_command( command::Action::System(action) => match action { system::Action::QueryInformation(tag) => { let information = - crate::system::get_information(graphics_info()); + crate::system::information(graphics_info()); let message = tag(information); diff --git a/winit/src/system.rs b/winit/src/system.rs index beda2bdd..fa4ad1a3 100644 --- a/winit/src/system.rs +++ b/winit/src/system.rs @@ -5,20 +5,17 @@ pub use iced_native::system::*; use iced_graphics::compositor; /// Query for available system information. -/// -/// Returns `None` if not using the `sysinfo` feature flag. pub fn fetch_information( - f: impl Fn(Option) -> Message + 'static, + f: impl Fn(Information) -> Message + 'static, ) -> Command { Command::single(command::Action::System(Action::QueryInformation( Box::new(f), ))) } -#[cfg(feature = "sysinfo")] -pub(crate) fn get_information( +pub(crate) fn information( graphics_info: compositor::Information, -) -> Option { +) -> Information { use sysinfo::{ProcessExt, ProcessorExt, System, SystemExt}; let mut system = System::new_all(); system.refresh_all(); @@ -30,7 +27,7 @@ pub(crate) fn get_information( .and_then(|process| Ok(process.memory())) .ok(); - let information = Information { + Information { system_name: system.name(), system_kernel: system.kernel_version(), system_version: system.long_os_version(), @@ -40,14 +37,5 @@ pub(crate) fn get_information( memory_used, graphics_adapter: graphics_info.adapter, graphics_backend: graphics_info.backend, - }; - - Some(information) -} - -#[cfg(not(feature = "sysinfo"))] -pub(crate) fn get_information( - _graphics_info: compositor::Information, -) -> Option { - None + } } -- cgit From 93bfe2c75ec97ef78f993926c703f040dde4a5f3 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sat, 30 Apr 2022 13:37:57 +0200 Subject: Expose `system` module through feature flag --- winit/Cargo.toml | 6 +++++- winit/src/application.rs | 19 +++++++++++-------- winit/src/lib.rs | 4 +++- 3 files changed, 19 insertions(+), 10 deletions(-) (limited to 'winit') diff --git a/winit/Cargo.toml b/winit/Cargo.toml index f5478e73..7758899c 100644 --- a/winit/Cargo.toml +++ b/winit/Cargo.toml @@ -12,12 +12,12 @@ categories = ["gui"] [features] debug = ["iced_native/debug"] +system = ["sysinfo"] [dependencies] window_clipboard = "0.2" log = "0.4" thiserror = "1.0" -sysinfo = "0.23" [dependencies.winit] version = "0.26" @@ -42,3 +42,7 @@ version = "0.3.6" [target.'cfg(target_arch = "wasm32")'.dependencies.web-sys] version = "0.3" features = ["Document", "Window"] + +[dependencies.sysinfo] +version = "0.23" +optional = true diff --git a/winit/src/application.rs b/winit/src/application.rs index 04dd55f1..1b7a4c8d 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -542,7 +542,7 @@ pub fn run_command( clipboard: &mut Clipboard, proxy: &mut winit::event_loop::EventLoopProxy, window: &winit::window::Window, - graphics_info: impl FnOnce() -> compositor::Information + Copy, + _graphics_info: impl FnOnce() -> compositor::Information + Copy, ) { use iced_native::command; use iced_native::system; @@ -580,15 +580,18 @@ pub fn run_command( } }, command::Action::System(action) => match action { - system::Action::QueryInformation(tag) => { - let information = - crate::system::information(graphics_info()); + system::Action::QueryInformation(_tag) => { + #[cfg(feature = "sysinfo")] + { + let information = + crate::system::information(_graphics_info()); - let message = tag(information); + let message = _tag(information); - proxy - .send_event(message) - .expect("Send message to event loop"); + proxy + .send_event(message) + .expect("Send message to event loop"); + } } }, } diff --git a/winit/src/lib.rs b/winit/src/lib.rs index 2b5bb2ff..4e5cb637 100644 --- a/winit/src/lib.rs +++ b/winit/src/lib.rs @@ -31,9 +31,11 @@ pub mod application; pub mod clipboard; pub mod conversion; pub mod settings; -pub mod system; pub mod window; +#[cfg(feature = "system")] +pub mod system; + mod error; mod mode; mod position; -- cgit From e24f26c28f09916f04f536a52368dcd1a4f34ed4 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 4 May 2022 14:02:54 +0200 Subject: Fix feature name in `cfg` block in `iced_winit` --- winit/src/application.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'winit') diff --git a/winit/src/application.rs b/winit/src/application.rs index 1b7a4c8d..421ae398 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -581,7 +581,7 @@ pub fn run_command( }, command::Action::System(action) => match action { system::Action::QueryInformation(_tag) => { - #[cfg(feature = "sysinfo")] + #[cfg(feature = "system")] { let information = crate::system::information(_graphics_info()); -- cgit From f1ec0af5070fe2752967cdc38ed66b8b70882366 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 4 May 2022 14:25:04 +0200 Subject: Run `system::information` in a different thread ... since it seems it can block for a couple of seconds. --- winit/src/application.rs | 17 +++++++++++------ winit/src/system.rs | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) (limited to 'winit') 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( 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( - f: impl Fn(Information) -> Message + 'static, + f: impl Fn(Information) -> Message + Send + 'static, ) -> Command { Command::single(command::Action::System(Action::QueryInformation( Box::new(f), -- cgit