Index: cc/damage_tracker.cc |
diff --git a/cc/damage_tracker.cc b/cc/damage_tracker.cc |
index b329700247f9b13e879566e247cd8c17a4c0d207..54fa81ad80c5d1acfa3dae549e766fde1a41c320 100644 |
--- a/cc/damage_tracker.cc |
+++ b/cc/damage_tracker.cc |
@@ -51,7 +51,7 @@ static inline void expandDamageRectInsideRectWithFilters(FloatRect& damageRect, |
damageRect.unite(expandedDamageRect); |
} |
-void DamageTracker::updateDamageTrackingState(const std::vector<LayerImpl*>& layerList, int targetSurfaceLayerID, bool targetSurfacePropertyChangedOnlyFromDescendant, const IntRect& targetSurfaceContentRect, LayerImpl* targetSurfaceMaskLayer, const WebKit::WebFilterOperations& filters) |
+void DamageTracker::updateDamageTrackingState(const std::vector<LayerImpl*>& layerList, int targetSurfaceLayerID, bool targetSurfacePropertyChangedOnlyFromDescendant, const IntRect& targetSurfaceContentRect, LayerImpl* targetSurfaceMaskLayer, const WebKit::WebFilterOperations& filters, SkImageFilter* filter) |
{ |
// |
// This function computes the "damage rect" of a target surface, and updates the state |
@@ -134,8 +134,13 @@ void DamageTracker::updateDamageTrackingState(const std::vector<LayerImpl*>& lay |
damageRectForThisUpdate.uniteIfNonZero(damageFromSurfaceMask); |
damageRectForThisUpdate.uniteIfNonZero(damageFromLeftoverRects); |
- if (filters.hasFilterThatMovesPixels()) |
+ if (filters.hasFilterThatMovesPixels()) { |
expandRectWithFilters(damageRectForThisUpdate, filters); |
+ } else if (filter) { |
+ // TODO(senorblanco): Once SkImageFilter reports its outsets, use |
+ // those here to limit damage. |
+ damageRectForThisUpdate = targetSurfaceContentRect; |
+ } |
} |
// Damage accumulates until we are notified that we actually did draw on that frame. |