stylo: Avoid recreating the stylist in RebuildAllStyleData.

Bug: 1386602
Reviewed-by: heycam
MozReview-Commit-ID: 31G9BLgqEmm
This commit is contained in:
Emilio Cobos Álvarez 2017-08-02 14:39:32 +02:00
parent 46f6e68bad
commit 2c97ec1832
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
2 changed files with 21 additions and 31 deletions

View file

@ -850,8 +850,8 @@ pub extern "C" fn Servo_StyleSet_AppendStyleSheet(
#[no_mangle]
pub extern "C" fn Servo_StyleSet_MediumFeaturesChanged(
raw_data: RawServoStyleSetBorrowed,
viewport_changed: bool,
) -> nsRestyleHint {
viewport_units_used: *mut bool,
) -> bool {
let global_style_data = &*GLOBAL_STYLE_DATA;
let guard = global_style_data.shared_lock.read();
@ -867,19 +867,16 @@ pub extern "C" fn Servo_StyleSet_MediumFeaturesChanged(
// less often.
let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut();
let viewport_units_used = data.stylist.device().used_viewport_size();
unsafe {
*viewport_units_used = data.stylist.device().used_viewport_size();
}
data.stylist.device_mut().reset_computed_values();
let rules_changed = data.stylist.media_features_change_changed_style(
data.stylesheets.iter(),
&guard,
);
if rules_changed {
structs::nsRestyleHint_eRestyle_Subtree
} else if viewport_changed && viewport_units_used {
structs::nsRestyleHint_eRestyle_ForceDescendants
} else {
nsRestyleHint(0)
}
rules_changed
}
#[no_mangle]
@ -1852,14 +1849,9 @@ pub extern "C" fn Servo_StyleSet_Init(pres_context: RawGeckoPresContextOwned)
}
#[no_mangle]
pub extern "C" fn Servo_StyleSet_RebuildData(raw_data: RawServoStyleSetBorrowed) {
let global_style_data = &*GLOBAL_STYLE_DATA;
let guard = global_style_data.shared_lock.read();
pub extern "C" fn Servo_StyleSet_RebuildCachedData(raw_data: RawServoStyleSetBorrowed) {
let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut();
data.stylist.device_mut().reset();
data.stylesheets.force_dirty();
data.flush_stylesheets::<GeckoElement>(&guard, None);
data.stylist.device_mut().rebuild_cached_data();
}
#[no_mangle]