feat: 支持读取显示器配置。

This commit is contained in:
2023-05-07 09:56:00 +08:00
parent 800c0d3fc4
commit 3a430716d6
4 changed files with 82 additions and 12 deletions

View File

@@ -1,22 +1,15 @@
use std::{
borrow::Borrow,
collections::HashMap,
ops::Sub,
sync::Arc,
time::{Duration, SystemTime},
};
use ddc_hi::Display;
use paris::{error, info, warn};
use tokio::sync::{OnceCell, OwnedMutexGuard, RwLock};
use tokio::sync::{OnceCell, RwLock};
use super::{display_state::DisplayState, display_handler::DisplayHandler};
use super::display_state::DisplayState;
use ddc_hi::Ddc;
pub struct DisplayHandler {
pub state: Arc<RwLock<DisplayState>>,
pub controller: Arc<RwLock<Display>>,
}
pub struct DisplayManager {
displays: Arc<RwLock<Vec<Arc<RwLock<DisplayHandler>>>>>,
@@ -46,7 +39,14 @@ impl DisplayManager {
for display in controllers {
let controller = Arc::new(RwLock::new(display));
let state = Arc::new(RwLock::new(DisplayState::default()));
displays.push(Arc::new(RwLock::new(DisplayHandler { controller, state })));
let handler = DisplayHandler {
state: state.clone(),
controller: controller.clone(),
};
handler.fetch_state().await;
displays.push(Arc::new(RwLock::new(handler)));
}
}