bail early for initial valued backgrounds

This commit is contained in:
Manish Goregaokar 2018-02-21 00:36:35 -08:00
parent 7de29d0ac4
commit 285313f3c7

View file

@ -19,11 +19,12 @@ use fragment::{Fragment, FragmentBorderBoxIterator, Overflow};
use gfx_traits::print_tree::PrintTree; use gfx_traits::print_tree::PrintTree;
use layout_debug; use layout_debug;
use model::{IntrinsicISizes, IntrinsicISizesContribution, MaybeAuto}; use model::{IntrinsicISizes, IntrinsicISizesContribution, MaybeAuto};
use std::{cmp, fmt, ptr}; use std::{cmp, fmt};
use style::computed_values::{border_collapse, border_spacing, table_layout}; use style::computed_values::{border_collapse, border_spacing, table_layout};
use style::context::SharedStyleContext; use style::context::SharedStyleContext;
use style::logical_geometry::LogicalSize; use style::logical_geometry::LogicalSize;
use style::properties::ComputedValues; use style::properties::ComputedValues;
use style::properties::style_structs::Background;
use style::servo::restyle_damage::ServoRestyleDamage; use style::servo::restyle_damage::ServoRestyleDamage;
use style::values::CSSFloat; use style::values::CSSFloat;
use style::values::computed::LengthOrPercentageOrAuto; use style::values::computed::LengthOrPercentageOrAuto;
@ -1159,20 +1160,18 @@ impl<'table> TableCellStyleInfo<'table> {
}; };
{ {
let cell_flow = &self.cell.block_flow; let cell_flow = &self.cell.block_flow;
let mut sty_ptr = ptr::null(); let initial = ComputedValues::initial_values();
let mut build_dl = |sty: &ComputedValues, state: &mut &mut DisplayListBuildState| { let build_dl = |sty: &ComputedValues, state: &mut &mut DisplayListBuildState| {
let background = sty.get_background();
// Don't redraw backgrounds that we've already drawn // Don't redraw backgrounds that we've already drawn
if sty_ptr == sty as *const _ { if background as *const Background == initial.get_background() as *const _ {
return; return;
} }
let background = sty.get_background();
let background_color = sty.resolve_color(background.background_color); let background_color = sty.resolve_color(background.background_color);
cell_flow.build_display_list_for_background_if_applicable_with_background( cell_flow.build_display_list_for_background_if_applicable_with_background(
state, background, background_color state, background, background_color
); );
sty_ptr = sty as *const _;
}; };
if let Some(ref sty) = self.colgroup_style { if let Some(ref sty) = self.colgroup_style {