diff options
author | zombiefungus <divmermarlav@gmail.com> | 2017-05-11 15:28:37 -0500 |
---|---|---|
committer | zombiefungus <divmermarlav@gmail.com> | 2017-05-11 15:28:37 -0500 |
commit | b055e07aa7716276e3a4279c9777eaad5a209b6b (patch) | |
tree | c1556154afe46cf9561698f5b582298c2f9b85bc /components/config/prefs.rs | |
parent | 973bf7af406eafc0f2056effaa0b50036ccad6b3 (diff) | |
download | servo-b055e07aa7716276e3a4279c9777eaad5a209b6b.tar.gz servo-b055e07aa7716276e3a4279c9777eaad5a209b6b.zip |
Add default value to layout.threads in prefs.rs (fix15638)
Diffstat (limited to 'components/config/prefs.rs')
-rw-r--r-- | components/config/prefs.rs | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/components/config/prefs.rs b/components/config/prefs.rs index d2eb988f91f..8b790575073 100644 --- a/components/config/prefs.rs +++ b/components/config/prefs.rs @@ -3,10 +3,12 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use basedir::default_config_dir; +use num_cpus; use opts; use resource_files::resources_dir_path; use rustc_serialize::json::{Json, ToJson}; use std::borrow::ToOwned; +use std::cmp::max; use std::collections::HashMap; use std::fs::File; use std::io::{Read, Write, stderr}; @@ -15,8 +17,11 @@ use std::sync::{Arc, RwLock}; lazy_static! { pub static ref PREFS: Preferences = { - let prefs = read_prefs().ok().unwrap_or_else(HashMap::new); - Preferences(Arc::new(RwLock::new(prefs))) + let defaults = default_prefs(); + if let Ok(prefs) = read_prefs() { + defaults.extend(prefs); + } + defaults }; } @@ -144,6 +149,13 @@ impl ToJson for Pref { } } +pub fn default_prefs() -> Preferences { + let prefs = Preferences(Arc::new(RwLock::new(HashMap::new()))); + prefs.set("layout.threads", PrefValue::Number( + max(num_cpus::get() * 3 / 4, 1) as f64)); + prefs +} + pub fn read_prefs_from_file<T>(mut file: T) -> Result<HashMap<String, Pref>, ()> where T: Read { let json = try!(Json::from_reader(&mut file).or_else(|e| { |