| Index: cc/trees/damage_tracker.cc
|
| diff --git a/cc/trees/damage_tracker.cc b/cc/trees/damage_tracker.cc
|
| index 95e545f2a3873604cb178d1958495392a4289ac9..c861025f1ee3bcb1cd91f40e354af8040e1efb5c 100644
|
| --- a/cc/trees/damage_tracker.cc
|
| +++ b/cc/trees/damage_tracker.cc
|
| @@ -29,23 +29,17 @@ DamageTracker::DamageTracker()
|
|
|
| DamageTracker::~DamageTracker() {}
|
|
|
| -static inline void ExpandRectWithFilters(gfx::Rect* rect,
|
| - const FilterOperations& filters) {
|
| - int top, right, bottom, left;
|
| - filters.GetOutsets(&top, &right, &bottom, &left);
|
| - rect->Inset(-left, -top, -right, -bottom);
|
| -}
|
| -
|
| static inline void ExpandDamageRectInsideRectWithFilters(
|
| gfx::Rect* damage_rect,
|
| const gfx::Rect& pre_filter_rect,
|
| const FilterOperations& filters) {
|
| - gfx::Rect expanded_damage_rect = *damage_rect;
|
| - ExpandRectWithFilters(&expanded_damage_rect, filters);
|
| - gfx::Rect filter_rect = pre_filter_rect;
|
| - ExpandRectWithFilters(&filter_rect, filters);
|
| + // Compute the pixels in the background of the surface that could be affected
|
| + // by the damage in the content below.
|
| + gfx::Rect expanded_damage_rect = filters.MapRect(*damage_rect, SkMatrix::I());
|
| +
|
| + // Restrict it to the rectangle in which the background filter is shown.
|
| + expanded_damage_rect.Intersect(pre_filter_rect);
|
|
|
| - expanded_damage_rect.Intersect(filter_rect);
|
| damage_rect->Union(expanded_damage_rect);
|
| }
|
|
|
| @@ -144,8 +138,8 @@ void DamageTracker::UpdateDamageTrackingState(
|
| damage_rect_for_this_update = damage_from_active_layers;
|
| damage_rect_for_this_update.Union(damage_from_surface_mask);
|
| damage_rect_for_this_update.Union(damage_from_leftover_rects);
|
| -
|
| - ExpandRectWithFilters(&damage_rect_for_this_update, filters);
|
| + damage_rect_for_this_update =
|
| + filters.MapRect(damage_rect_for_this_update, SkMatrix::I());
|
| }
|
|
|
| // Damage accumulates until we are notified that we actually did draw on that
|
|
|