Auto merge of #17802 - emilio:reland-stuff, r=heycam

Revert "Backed out changeset b10e6ba9cbdb because gecko part had to b…

…e backed out."

This reverts commit b96d96d448.

The fix on the Gecko side is trivial, and I can land it after this lands.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/17802)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2017-07-20 20:28:25 -07:00 committed by GitHub
commit a3c398b5da
6 changed files with 18 additions and 10 deletions

View file

@ -1047,8 +1047,9 @@ extern "C" {
-> CSSPseudoElementType;
}
extern "C" {
pub fn Gecko_CalcStyleDifference(oldstyle: *mut nsStyleContext,
newstyle: ServoComputedValuesBorrowed,
pub fn Gecko_CalcStyleDifference(old_style: *const ServoStyleContext,
new_style: *const ServoStyleContext,
old_style_bits: u64,
any_style_changed: *mut bool)
-> nsChangeHint;
}

View file

@ -48,14 +48,14 @@ impl GeckoRestyleDamage {
/// accessed from layout.
pub fn compute_style_difference(
source: &nsStyleContext,
new_style: &Arc<ComputedValues>
old_style: &ComputedValues,
new_style: &Arc<ComputedValues>,
) -> StyleDifference {
// TODO(emilio): Const-ify this?
let context = source as *const nsStyleContext as *mut nsStyleContext;
let mut any_style_changed: bool = false;
let hint = unsafe {
bindings::Gecko_CalcStyleDifference(context,
&new_style,
bindings::Gecko_CalcStyleDifference(old_style.as_style_context(),
new_style.as_style_context(),
source.mBits,
&mut any_style_changed)
};
let change = if any_style_changed { StyleChange::Changed } else { StyleChange::Unchanged };