| 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 52c8277032da95e97f0450be380336659f1cf7b5..a6f558492dbdc1b920035af16dc87ff2ca43d9f1 100644
|
| --- a/cc/playback/display_list_recording_source.cc
|
| +++ b/cc/playback/display_list_recording_source.cc
|
| @@ -117,6 +117,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,
|
| @@ -133,6 +141,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,
|
| @@ -150,6 +161,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;
|
|
|
|
|