mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Flush style sharing cache on parent mismatch.
This commit is contained in:
parent
83f687a7be
commit
5ccce5911f
1 changed files with 9 additions and 0 deletions
|
@ -708,6 +708,7 @@ pub trait ElementMatchMethods : TElement {
|
||||||
_ => return StyleSharingResult::CannotShare,
|
_ => return StyleSharingResult::CannotShare,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let mut should_clear_cache = false;
|
||||||
for (i, &mut (ref mut candidate, ())) in style_sharing_candidate_cache.iter_mut().enumerate() {
|
for (i, &mut (ref mut candidate, ())) in style_sharing_candidate_cache.iter_mut().enumerate() {
|
||||||
let sharing_result = self.share_style_with_candidate_if_possible(parent,
|
let sharing_result = self.share_style_with_candidate_if_possible(parent,
|
||||||
shared_context,
|
shared_context,
|
||||||
|
@ -750,6 +751,11 @@ pub trait ElementMatchMethods : TElement {
|
||||||
// Cache miss, let's see what kind of failure to decide
|
// Cache miss, let's see what kind of failure to decide
|
||||||
// whether we keep trying or not.
|
// whether we keep trying or not.
|
||||||
match miss {
|
match miss {
|
||||||
|
// Cache miss because of parent, clear the candidate cache.
|
||||||
|
CacheMiss::Parent => {
|
||||||
|
should_clear_cache = true;
|
||||||
|
break;
|
||||||
|
},
|
||||||
// Too expensive failure, give up, we don't want another
|
// Too expensive failure, give up, we don't want another
|
||||||
// one of these.
|
// one of these.
|
||||||
CacheMiss::CommonStyleAffectingAttributes |
|
CacheMiss::CommonStyleAffectingAttributes |
|
||||||
|
@ -761,6 +767,9 @@ pub trait ElementMatchMethods : TElement {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if should_clear_cache {
|
||||||
|
style_sharing_candidate_cache.clear();
|
||||||
|
}
|
||||||
|
|
||||||
StyleSharingResult::CannotShare
|
StyleSharingResult::CannotShare
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue