mirror of
https://github.com/servo/servo.git
synced 2025-08-10 07:55:33 +01:00
stylo: Avoid recreating the stylist in RebuildAllStyleData.
Bug: 1386602 Reviewed-by: heycam MozReview-Commit-ID: 31G9BLgqEmm
This commit is contained in:
parent
46f6e68bad
commit
2c97ec1832
2 changed files with 21 additions and 31 deletions
|
@ -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]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue