mirror of
https://github.com/ilya-zlobintsev/LACT.git
synced 2026-08-19 01:14:43 -05:00
fix: set correct poll interval by default, enforce minimum value (#802)
This commit is contained in:
@@ -5,6 +5,7 @@ pub mod profile_rule_window;
|
||||
|
||||
use crate::{
|
||||
app::{header::profile_rule_window::ProfileEditParams, msg::AppMsg, APP_BROKER},
|
||||
config::{MAX_STATS_POLL_INTERVAL_MS, MIN_STATS_POLL_INTERVAL_MS},
|
||||
CONFIG, I18N,
|
||||
};
|
||||
use glib::clone;
|
||||
@@ -217,7 +218,7 @@ impl Component for Header {
|
||||
},
|
||||
|
||||
gtk::SpinButton {
|
||||
set_range: (250.0, 5000.0),
|
||||
set_range: (MIN_STATS_POLL_INTERVAL_MS as f64, MAX_STATS_POLL_INTERVAL_MS as f64),
|
||||
set_increments: (250.0, 500.0),
|
||||
set_digits: 0,
|
||||
set_value: CONFIG.read().stats_poll_interval_ms as f64,
|
||||
|
||||
+26
-3
@@ -1,9 +1,12 @@
|
||||
use crate::app::graphs_window::stat::StatType;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde::{Deserialize, Deserializer, Serialize};
|
||||
use std::{collections::HashMap, env, fs, path::PathBuf};
|
||||
use tracing::{debug, error};
|
||||
|
||||
#[derive(Default, Serialize, Deserialize)]
|
||||
pub const MIN_STATS_POLL_INTERVAL_MS: i64 = 250;
|
||||
pub const MAX_STATS_POLL_INTERVAL_MS: i64 = 5000;
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct UiConfig {
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub selected_gpu: Option<String>,
|
||||
@@ -11,12 +14,27 @@ pub struct UiConfig {
|
||||
pub plots_time_period: Option<u64>,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub plots_per_row: Option<u64>,
|
||||
#[serde(default = "default_stats_poll_interval")]
|
||||
#[serde(
|
||||
default = "default_stats_poll_interval",
|
||||
deserialize_with = "deserialize_poll_interval"
|
||||
)]
|
||||
pub stats_poll_interval_ms: i64,
|
||||
#[serde(default)]
|
||||
pub gpus: HashMap<String, UiGpuConfig>,
|
||||
}
|
||||
|
||||
impl Default for UiConfig {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
selected_gpu: None,
|
||||
plots_time_period: None,
|
||||
plots_per_row: None,
|
||||
stats_poll_interval_ms: default_stats_poll_interval(),
|
||||
gpus: HashMap::new(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default, Serialize, Deserialize)]
|
||||
pub struct UiGpuConfig {
|
||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
||||
@@ -79,3 +97,8 @@ fn config_path() -> PathBuf {
|
||||
fn default_stats_poll_interval() -> i64 {
|
||||
500
|
||||
}
|
||||
|
||||
fn deserialize_poll_interval<'de, D: Deserializer<'de>>(deserializer: D) -> Result<i64, D::Error> {
|
||||
let value = i64::deserialize(deserializer)?;
|
||||
Ok(value.clamp(MIN_STATS_POLL_INTERVAL_MS, MAX_STATS_POLL_INTERVAL_MS))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user