aboutsummaryrefslogtreecommitdiffstats
path: root/components/config/prefs.rs
diff options
context:
space:
mode:
authorzombiefungus <divmermarlav@gmail.com>2017-05-11 15:28:37 -0500
committerzombiefungus <divmermarlav@gmail.com>2017-05-11 15:28:37 -0500
commitb055e07aa7716276e3a4279c9777eaad5a209b6b (patch)
treec1556154afe46cf9561698f5b582298c2f9b85bc /components/config/prefs.rs
parent973bf7af406eafc0f2056effaa0b50036ccad6b3 (diff)
downloadservo-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.rs16
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| {