diff --git a/lact-gui/src/app/mod.rs b/lact-gui/src/app/mod.rs index 8701e73..77ad69a 100644 --- a/lact-gui/src/app/mod.rs +++ b/lact-gui/src/app/mod.rs @@ -9,6 +9,7 @@ use std::time::Duration; use crate::client::DaemonClient; use apply_revealer::ApplyRevealer; +use glib::clone; use gtk::prelude::*; use gtk::*; use header::Header; @@ -249,12 +250,11 @@ impl App { // The loop that gets stats let (sender, receiver) = glib::MainContext::channel(glib::PRIORITY_DEFAULT); - { - let daemon_connection = self.daemon_client.clone(); - thread::spawn(move || loop { + thread::spawn( + clone!(@strong self.daemon_client as daemon_client => move || loop { let gpu_id = current_gpu_id.read().unwrap(); - match daemon_connection + match daemon_client .get_device_stats(&gpu_id) .and_then(|stats| stats.inner()) { @@ -266,19 +266,19 @@ impl App { } } thread::sleep(Duration::from_millis(500)); - }); - } + }), + ); // Receiving stats into the gui event loop - { - let thermals_page = self.root_stack.thermals_page.clone(); - // let oc_page = self.root_stack.oc_page.clone(); - receiver.attach(None, move |msg| { + receiver.attach( + None, + clone!(@strong self.root_stack as root_stack, => move |msg| { match msg { GuiUpdateMsg::GpuStats(stats) => { trace!("New stats received, updating {stats:?}"); - thermals_page.set_stats(&stats); + root_stack.info_page.set_stats(&stats); + root_stack.thermals_page.set_stats(&stats); // oc_page.set_stats(&stats); } /*GuiUpdateMsg::FanControlInfo(fan_control_info) => { thermals_page.set_ventilation_info(fan_control_info) @@ -286,8 +286,8 @@ impl App { } glib::Continue(true) - }); - } + }), + ); } } diff --git a/lact-gui/src/app/root_stack/info_page/mod.rs b/lact-gui/src/app/root_stack/info_page/mod.rs index 86819ce..550e2dd 100644 --- a/lact-gui/src/app/root_stack/info_page/mod.rs +++ b/lact-gui/src/app/root_stack/info_page/mod.rs @@ -2,7 +2,7 @@ mod vulkan_info; use gtk::prelude::*; use gtk::*; -use lact_schema::DeviceInfo; +use lact_schema::{DeviceInfo, DeviceStats}; use vulkan_info::VulkanInfoFrame; #[derive(Clone)] @@ -184,13 +184,6 @@ impl InformationPage { self.driver_label .set_markup(&format!("{}", gpu_info.driver)); - // TODO - // let vram_size = gpu_info - // .vram_size - // .map_or_else(|| "unknown".to_owned(), |size| size.to_string()); - // self.vram_size_label - // .set_markup(&format!("{vram_size}")); - let link_speed = gpu_info .link_info .current_speed @@ -210,4 +203,13 @@ impl InformationPage { self.container.show_all(); } + + pub fn set_stats(&self, stats: &DeviceStats) { + let vram_size = stats.total_vram.map_or_else( + || "unknown".to_owned(), + |size| (size / 1024 / 1024).to_string(), + ); + self.vram_size_label + .set_markup(&format!("{vram_size}MiB")); + } } diff --git a/lact-gui/src/app/root_stack/info_page/vulkan_info.rs b/lact-gui/src/app/root_stack/info_page/vulkan_info.rs index 287c60f..3b77d94 100644 --- a/lact-gui/src/app/root_stack/info_page/vulkan_info.rs +++ b/lact-gui/src/app/root_stack/info_page/vulkan_info.rs @@ -76,22 +76,22 @@ impl VulkanInfoFrame { vbox.pack_start(&grid, false, true, 5); - let features_expander = Expander::new(Some("Feature support")); - - vbox.pack_start(&features_expander, false, true, 5); + let features_expander = Expander::builder().label("Feature support").build(); let features_scrolled_window = ScrolledWindow::builder().build(); features_scrolled_window.set_vexpand(true); let features_box = Box::new(Orientation::Vertical, 5); - features_box.set_halign(Align::Center); + features_box.set_valign(Align::Fill); features_scrolled_window.add(&features_box); features_expander.add(&features_scrolled_window); + vbox.pack_start(&features_expander, false, true, 5); + let extensions_box = Box::builder() .orientation(Orientation::Vertical) .spacing(5)