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/system.rs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'winit/src/system.rs') 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