diff options
author | Simon Sapin <simon.sapin@exyr.org> | 2017-03-17 16:46:22 +0100 |
---|---|---|
committer | Simon Sapin <simon.sapin@exyr.org> | 2017-03-19 22:30:36 +0100 |
commit | adb97d4cbefde92b3645619d826ce175a787a069 (patch) | |
tree | c202ff995b70d7fd4f8feac0a009a7b839c460ba /components/script/dom/cssrulelist.rs | |
parent | f35b4e27b3e0b748e10662cfb6f18873258483b7 (diff) | |
download | servo-adb97d4cbefde92b3645619d826ce175a787a069.tar.gz servo-adb97d4cbefde92b3645619d826ce175a787a069.zip |
Wrap most CSS rules in Locked<_> instead of RwLock<_>
Diffstat (limited to 'components/script/dom/cssrulelist.rs')
-rw-r--r-- | components/script/dom/cssrulelist.rs | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/components/script/dom/cssrulelist.rs b/components/script/dom/cssrulelist.rs index 6321296c785..bc77361b5ae 100644 --- a/components/script/dom/cssrulelist.rs +++ b/components/script/dom/cssrulelist.rs @@ -13,7 +13,6 @@ use dom::cssrule::CSSRule; use dom::cssstylesheet::CSSStyleSheet; use dom::window::Window; use dom_struct::dom_struct; -use parking_lot::RwLock; use std::sync::Arc; use style::shared_lock::Locked; use style::stylesheets::{CssRules, KeyframesRule, RulesMutateError}; @@ -45,19 +44,19 @@ pub struct CSSRuleList { pub enum RulesSource { Rules(Arc<Locked<CssRules>>), - Keyframes(Arc<RwLock<KeyframesRule>>), + Keyframes(Arc<Locked<KeyframesRule>>), } impl CSSRuleList { #[allow(unrooted_must_root)] pub fn new_inherited(parent_stylesheet: &CSSStyleSheet, rules: RulesSource) -> CSSRuleList { + let guard = parent_stylesheet.shared_lock().read(); let dom_rules = match rules { RulesSource::Rules(ref rules) => { - let guard = parent_stylesheet.shared_lock().read(); rules.read_with(&guard).0.iter().map(|_| MutNullableJS::new(None)).collect() } RulesSource::Keyframes(ref rules) => { - rules.read().keyframes.iter().map(|_| MutNullableJS::new(None)).collect() + rules.read_with(&guard).keyframes.iter().map(|_| MutNullableJS::new(None)).collect() } }; @@ -104,10 +103,10 @@ impl CSSRuleList { // In case of a keyframe rule, index must be valid. pub fn remove_rule(&self, index: u32) -> ErrorResult { let index = index as usize; + let mut guard = self.parent_stylesheet.shared_lock().write(); match self.rules { RulesSource::Rules(ref css_rules) => { - let mut guard = self.parent_stylesheet.shared_lock().write(); css_rules.write_with(&mut guard).remove_rule(index)?; let mut dom_rules = self.dom_rules.borrow_mut(); dom_rules[index].get().map(|r| r.detach()); @@ -119,7 +118,7 @@ impl CSSRuleList { let mut dom_rules = self.dom_rules.borrow_mut(); dom_rules[index].get().map(|r| r.detach()); dom_rules.remove(index); - kf.write().keyframes.remove(index); + kf.write_with(&mut guard).keyframes.remove(index); Ok(()) } } @@ -136,9 +135,9 @@ impl CSSRuleList { self.dom_rules.borrow().get(idx as usize).map(|rule| { rule.or_init(|| { let parent_stylesheet = &self.parent_stylesheet; + let guard = parent_stylesheet.shared_lock().read(); match self.rules { RulesSource::Rules(ref rules) => { - let guard = parent_stylesheet.shared_lock().read(); CSSRule::new_specific(self.global().as_window(), parent_stylesheet, rules.read_with(&guard).0[idx as usize].clone()) @@ -146,7 +145,7 @@ impl CSSRuleList { RulesSource::Keyframes(ref rules) => { Root::upcast(CSSKeyframeRule::new(self.global().as_window(), parent_stylesheet, - rules.read() + rules.read_with(&guard) .keyframes[idx as usize] .clone())) } |