Merge pull request #3584 from 21pages/fix
fix frequent load RustDesk_default.toml
This commit is contained in:
		
						commit
						2dd7a695d9
					
				| @ -4,7 +4,7 @@ use std::{ | ||||
|     net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr}, | ||||
|     path::{Path, PathBuf}, | ||||
|     sync::{Arc, Mutex, RwLock}, | ||||
|     time::SystemTime, | ||||
|     time::{Duration, Instant, SystemTime}, | ||||
| }; | ||||
| 
 | ||||
| use anyhow::Result; | ||||
| @ -51,6 +51,7 @@ lazy_static::lazy_static! { | ||||
|     pub static ref APP_NAME: Arc<RwLock<String>> = Arc::new(RwLock::new("RustDesk".to_owned())); | ||||
|     static ref KEY_PAIR: Arc<Mutex<Option<KeyPair>>> = Default::default(); | ||||
|     static ref HW_CODEC_CONFIG: Arc<RwLock<HwCodecConfig>> = Arc::new(RwLock::new(HwCodecConfig::load())); | ||||
|     static ref USER_DEFAULT_CONFIG: Arc<RwLock<(UserDefaultConfig, Instant)>> = Arc::new(RwLock::new((UserDefaultConfig::load(), Instant::now()))); | ||||
| } | ||||
| 
 | ||||
| lazy_static::lazy_static! { | ||||
| @ -123,7 +124,7 @@ macro_rules! serde_field_bool { | ||||
|         } | ||||
|         impl $struct_name { | ||||
|             pub fn $func() -> bool { | ||||
|                 UserDefaultConfig::load().get($field_name) == "Y" | ||||
|                 UserDefaultConfig::read().get($field_name) == "Y" | ||||
|             } | ||||
|         } | ||||
|     }; | ||||
| @ -980,21 +981,21 @@ impl PeerConfig { | ||||
|     serde_field_string!( | ||||
|         default_view_style, | ||||
|         deserialize_view_style, | ||||
|         UserDefaultConfig::load().get("view_style") | ||||
|         UserDefaultConfig::read().get("view_style") | ||||
|     ); | ||||
|     serde_field_string!( | ||||
|         default_scroll_style, | ||||
|         deserialize_scroll_style, | ||||
|         UserDefaultConfig::load().get("scroll_style") | ||||
|         UserDefaultConfig::read().get("scroll_style") | ||||
|     ); | ||||
|     serde_field_string!( | ||||
|         default_image_quality, | ||||
|         deserialize_image_quality, | ||||
|         UserDefaultConfig::load().get("image_quality") | ||||
|         UserDefaultConfig::read().get("image_quality") | ||||
|     ); | ||||
| 
 | ||||
|     fn default_custom_image_quality() -> Vec<i32> { | ||||
|         let f: f64 = UserDefaultConfig::load() | ||||
|         let f: f64 = UserDefaultConfig::read() | ||||
|             .get("custom_image_quality") | ||||
|             .parse() | ||||
|             .unwrap_or(50.0); | ||||
| @ -1020,15 +1021,15 @@ impl PeerConfig { | ||||
|         let mut mp: HashMap<String, String> = de::Deserialize::deserialize(deserializer)?; | ||||
|         let mut key = "codec-preference"; | ||||
|         if !mp.contains_key(key) { | ||||
|             mp.insert(key.to_owned(), UserDefaultConfig::load().get(key)); | ||||
|             mp.insert(key.to_owned(), UserDefaultConfig::read().get(key)); | ||||
|         } | ||||
|         key = "custom-fps"; | ||||
|         if !mp.contains_key(key) { | ||||
|             mp.insert(key.to_owned(), UserDefaultConfig::load().get(key)); | ||||
|             mp.insert(key.to_owned(), UserDefaultConfig::read().get(key)); | ||||
|         } | ||||
|         key = "zoom-cursor"; | ||||
|         if !mp.contains_key(key) { | ||||
|             mp.insert(key.to_owned(), UserDefaultConfig::load().get(key)); | ||||
|             mp.insert(key.to_owned(), UserDefaultConfig::read().get(key)); | ||||
|         } | ||||
|         Ok(mp) | ||||
|     } | ||||
| @ -1046,7 +1047,12 @@ serde_field_bool!( | ||||
|     default_show_quality_monitor, | ||||
|     "ShowQualityMonitor::default_show_quality_monitor" | ||||
| ); | ||||
| serde_field_bool!(DisableAudio, "disable_audio", default_disable_audio, "DisableAudio::default_disable_audio"); | ||||
| serde_field_bool!( | ||||
|     DisableAudio, | ||||
|     "disable_audio", | ||||
|     default_disable_audio, | ||||
|     "DisableAudio::default_disable_audio" | ||||
| ); | ||||
| serde_field_bool!( | ||||
|     EnableFileTransfer, | ||||
|     "enable_file_transfer", | ||||
| @ -1065,9 +1071,19 @@ serde_field_bool!( | ||||
|     default_lock_after_session_end, | ||||
|     "LockAfterSessionEnd::default_lock_after_session_end" | ||||
| ); | ||||
| serde_field_bool!(PrivacyMode, "privacy_mode", default_privacy_mode, "PrivacyMode::default_privacy_mode"); | ||||
| serde_field_bool!( | ||||
|     PrivacyMode, | ||||
|     "privacy_mode", | ||||
|     default_privacy_mode, | ||||
|     "PrivacyMode::default_privacy_mode" | ||||
| ); | ||||
| 
 | ||||
| serde_field_bool!(AllowSwapKey, "allow_swap_key", default_allow_swap_key, "AllowSwapKey::default_allow_swap_key"); | ||||
| serde_field_bool!( | ||||
|     AllowSwapKey, | ||||
|     "allow_swap_key", | ||||
|     default_allow_swap_key, | ||||
|     "AllowSwapKey::default_allow_swap_key" | ||||
| ); | ||||
| 
 | ||||
| #[derive(Debug, Default, Serialize, Deserialize, Clone)] | ||||
| pub struct LocalConfig { | ||||
| @ -1282,6 +1298,14 @@ pub struct UserDefaultConfig { | ||||
| } | ||||
| 
 | ||||
| impl UserDefaultConfig { | ||||
|     pub fn read() -> UserDefaultConfig { | ||||
|         let mut cfg = USER_DEFAULT_CONFIG.write().unwrap(); | ||||
|         if cfg.1.elapsed() > Duration::from_secs(1) { | ||||
|             *cfg = (Self::load(), Instant::now()); | ||||
|         } | ||||
|         cfg.0.clone() | ||||
|     } | ||||
| 
 | ||||
|     pub fn load() -> UserDefaultConfig { | ||||
|         Config::load_::<UserDefaultConfig>("_default") | ||||
|     } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user