| 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 9d6e31f26c7effe52f992ee3ce86ba49f382e3c3..9caed71fd3a743f393cdc77391eac709d04be7ae 100644
|
| --- a/cc/playback/display_list_recording_source.cc
|
| +++ b/cc/playback/display_list_recording_source.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include <algorithm>
|
|
|
| +#include "cc/base/histograms.h"
|
| #include "cc/base/region.h"
|
| #include "cc/layers/content_layer_client.h"
|
| #include "cc/playback/display_item_list.h"
|
| @@ -22,6 +23,11 @@ const int kPixelDistanceToRecord = 8000;
|
| // operations.
|
| const int kOpCountThatIsOkToAnalyze = 10;
|
|
|
| +DEFINE_SCOPED_UMA_HISTOGRAM_AREA_TIMER(
|
| + ScopedDisplayListRecordingSourceUpdateTimer,
|
| + "Compositing.DisplayListRecordingSource.UpdateUs",
|
| + "Compositing.DisplayListRecordingSource.UpdateInvalidatedAreaPerMs");
|
| +
|
| } // namespace
|
|
|
| namespace cc {
|
| @@ -51,6 +57,7 @@ bool DisplayListRecordingSource::UpdateAndExpandInvalidation(
|
| const gfx::Rect& visible_layer_rect,
|
| int frame_number,
|
| RecordingMode recording_mode) {
|
| + ScopedDisplayListRecordingSourceUpdateTimer timer;
|
| bool updated = false;
|
|
|
| if (size_ != layer_size) {
|
| @@ -76,6 +83,12 @@ bool DisplayListRecordingSource::UpdateAndExpandInvalidation(
|
| updated = true;
|
| }
|
|
|
| + // Count the area that is being invalidated.
|
| + Region recorded_invalidation(*invalidation);
|
| + recorded_invalidation.Intersect(recorded_viewport_);
|
| + for (Region::Iterator it(recorded_invalidation); it.has_rect(); it.next())
|
| + timer.AddArea(it.rect().size().GetArea());
|
| +
|
| if (!updated && !invalidation->Intersects(recorded_viewport_))
|
| return false;
|
|
|
|
|