Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(439)

Unified Diff: third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp

Issue 2868283003: [SPv2] Renaming and refactor about raster invalidation tracking (Closed)
Patch Set: - Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp
diff --git a/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp b/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp
index 0aaecc29f3c0fddf654d9d7279d43c442aa709e0..612385a0f360279353a80562b430d51db769a035 100644
--- a/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp
+++ b/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp
@@ -91,7 +91,7 @@ class PaintArtifactCompositor::ContentLayerClientImpl
return;
if (RuntimeEnabledFeatures::paintUnderInvalidationCheckingEnabled())
- tracking->tracked_raster_invalidations.clear();
+ tracking->invalidations.clear();
else
CcLayersRasterInvalidationTrackingMap().Remove(cc_picture_layer_.get());
}
@@ -100,28 +100,28 @@ class PaintArtifactCompositor::ContentLayerClientImpl
RasterInvalidationTracking* tracking =
CcLayersRasterInvalidationTrackingMap().Find(cc_picture_layer_.get());
if (tracking)
- return !tracking->tracked_raster_invalidations.IsEmpty();
+ return !tracking->invalidations.IsEmpty();
return false;
}
- void SetNeedsDisplayRect(const gfx::Rect& rect,
- RasterInvalidationInfo* raster_invalidation_info) {
+ void SetNeedsDisplayRect(const gfx::Rect& rect) {
cc_picture_layer_->SetNeedsDisplayRect(rect);
+ }
- if (!raster_invalidation_info || rect.IsEmpty())
- return;
-
- RasterInvalidationTracking& tracking =
+ void AddTrackedRasterInvalidations(
+ const RasterInvalidationTracking& tracking) {
+ auto& cc_tracking =
CcLayersRasterInvalidationTrackingMap().Add(cc_picture_layer_.get());
+ cc_tracking.invalidations.AppendVector(tracking.invalidations);
- tracking.tracked_raster_invalidations.push_back(*raster_invalidation_info);
-
- if (RuntimeEnabledFeatures::paintUnderInvalidationCheckingEnabled()) {
+ if (!RuntimeEnabledFeatures::paintUnderInvalidationCheckingEnabled())
+ return;
+ for (const auto& info : tracking.invalidations) {
// TODO(crbug.com/496260): Some antialiasing effects overflow the paint
// invalidation rect.
- IntRect r = raster_invalidation_info->rect;
+ IntRect r = info.rect;
r.Inflate(1);
- tracking.raster_invalidation_region_since_last_paint.Unite(r);
+ cc_tracking.invalidation_region_since_last_paint.Unite(r);
}
}
@@ -171,17 +171,10 @@ PaintArtifactCompositor::PaintArtifactCompositor() {
root_layer_ = cc::Layer::Create();
web_layer_ = Platform::Current()->CompositorSupport()->CreateLayerFromCCLayer(
root_layer_.get());
- is_tracking_raster_invalidations_ = false;
}
PaintArtifactCompositor::~PaintArtifactCompositor() {}
-void PaintArtifactCompositor::SetTracksRasterInvalidations(
- bool tracks_paint_invalidations) {
- ResetTrackedRasterInvalidations();
- is_tracking_raster_invalidations_ = tracks_paint_invalidations;
-}
-
void PaintArtifactCompositor::ResetTrackedRasterInvalidations() {
for (auto& client : content_layer_clients_)
client->ResetTrackedRasterInvalidations();
@@ -289,12 +282,6 @@ PaintArtifactCompositor::CompositedLayerForPendingLayer(
content_layer_client->ClearPaintChunkDebugData();
for (const auto& paint_chunk : pending_layer.paint_chunks) {
- RasterInvalidationTracking* raster_tracking =
- tracking_map ? tracking_map->Find(paint_chunk) : nullptr;
- DCHECK(!raster_tracking ||
- raster_tracking->tracked_raster_invalidations.size() ==
- paint_chunk->raster_invalidation_rects.size());
-
if (store_debug_info) {
content_layer_client->AddPaintChunkDebugData(
paint_artifact.GetDisplayItemList().SubsequenceAsJSON(
@@ -303,10 +290,8 @@ PaintArtifactCompositor::CompositedLayerForPendingLayer(
DisplayItemList::kShownOnlyDisplayItemTypes));
}
- for (unsigned index = 0;
- index < paint_chunk->raster_invalidation_rects.size(); ++index) {
- IntRect rect(
- EnclosingIntRect(paint_chunk->raster_invalidation_rects[index]));
+ for (const auto& r : paint_chunk->raster_invalidation_rects) {
+ IntRect rect(EnclosingIntRect(r));
gfx::Rect cc_invalidation_rect(rect.X(), rect.Y(),
std::max(0, rect.Width()),
std::max(0, rect.Height()));
@@ -315,12 +300,12 @@ PaintArtifactCompositor::CompositedLayerForPendingLayer(
// Raster paintChunk.rasterInvalidationRects is in the space of the
// containing transform node, so need to subtract off the layer offset.
cc_invalidation_rect.Offset(-cc_combined_bounds.OffsetFromOrigin());
- content_layer_client->SetNeedsDisplayRect(
- cc_invalidation_rect,
- raster_tracking
- ? &raster_tracking->tracked_raster_invalidations[index]
- : nullptr);
+ content_layer_client->SetNeedsDisplayRect(cc_invalidation_rect);
}
+
+ if (auto* raster_tracking =
+ tracking_map ? tracking_map->Find(paint_chunk) : nullptr)
+ content_layer_client->AddTrackedRasterInvalidations(*raster_tracking);
}
new_content_layer_clients.push_back(std::move(content_layer_client));

Powered by Google App Engine
This is Rietveld 408576698