diff options
Diffstat (limited to 'winit')
| -rw-r--r-- | winit/src/application.rs | 36 | ||||
| -rw-r--r-- | winit/src/system.rs | 39 | 
2 files changed, 41 insertions, 34 deletions
| 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<Message: 'static + std::fmt::Debug + Send, E: Executor>(              },              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<Message>(          Box::new(f),      )))  } + +#[cfg(feature = "sysinfo")] +pub(crate) fn get_information( +    graphics_info: &window::GraphicsInformation, +) -> Option<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 = 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<Information> { +    None +} | 
