| Index: cc/playback/display_list_recording_source.cc
|
| diff --git a/cc/playback/display_list_recording_source.cc b/cc/playback/display_list_recording_source.cc
|
| index d4e6a3e6e09dd3ba63597c32770d7831f9a73346..bfd8fdd29fede4221b301c77a63ab7f3e1ce465f 100644
|
| --- a/cc/playback/display_list_recording_source.cc
|
| +++ b/cc/playback/display_list_recording_source.cc
|
| @@ -111,6 +111,14 @@ void DisplayListRecordingSource::FinishDisplayItemListUpdate() {
|
| display_list_->GenerateDiscardableImagesMetadata();
|
| }
|
|
|
| +void DisplayListRecordingSource::SetNeedsDisplayRect(
|
| + const gfx::Rect& layer_rect) {
|
| + if (!layer_rect.IsEmpty()) {
|
| + // Clamp invalidation to the layer bounds.
|
| + invalidation_.Union(gfx::IntersectRects(layer_rect, gfx::Rect(size_)));
|
| + }
|
| +}
|
| +
|
| bool DisplayListRecordingSource::UpdateAndExpandInvalidation(
|
| ContentLayerClient* painter,
|
| Region* invalidation,
|
| @@ -127,6 +135,9 @@ bool DisplayListRecordingSource::UpdateAndExpandInvalidation(
|
| updated = true;
|
| }
|
|
|
| + invalidation_.Swap(invalidation);
|
| + invalidation_.Clear();
|
| +
|
| gfx::Rect new_recorded_viewport = painter->PaintableRegion();
|
| if (new_recorded_viewport != recorded_viewport_) {
|
| UpdateInvalidationForNewViewport(recorded_viewport_, new_recorded_viewport,
|
| @@ -144,6 +155,9 @@ bool DisplayListRecordingSource::UpdateAndExpandInvalidation(
|
| if (!updated && !invalidation->Intersects(recorded_viewport_))
|
| return false;
|
|
|
| + if (invalidation->IsEmpty())
|
| + return false;
|
| +
|
| ContentLayerClient::PaintingControlSetting painting_control =
|
| ContentLayerClient::PAINTING_BEHAVIOR_NORMAL;
|
|
|
|
|