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

Unified Diff: third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp

Issue 2033513003: (NOT FOR COMMIT) Testing layer invalidation speedups. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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/GraphicsLayer.cpp
diff --git a/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp b/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp
index a95334c4641afdfbdad83a6da2c60e3f72df8c38..f48542c3331097de61199d541f41a5eddb74478d 100644
--- a/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp
+++ b/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp
@@ -1057,19 +1057,39 @@ void GraphicsLayer::setNeedsDisplay()
trackPaintInvalidation(*this, FloatRect(FloatPoint(), m_size), PaintInvalidationFull);
}
-void GraphicsLayer::setNeedsDisplayInRect(const IntRect& rect, PaintInvalidationReason invalidationReason, const DisplayItemClient& client)
+void GraphicsLayer::setNeedsDisplayInRect(const Vector<NeedsDisplayRecord>& rects)
{
if (!drawsContent())
return;
- m_layer->layer()->invalidateRect(rect);
- if (firstPaintInvalidationTrackingEnabled())
- m_debugInfo.appendAnnotatedInvalidateRect(rect, invalidationReason);
+ std::vector<blink::WebRect> offsetRects(rects.size());
+
+ for (size_t i = 0; i < rects.size(); ++i) {
+ IntRect rect = rects[i].r;
+ rect.move(-offsetFromLayoutObject());
+ offsetRects[i] = rect;
+ }
+
+ m_layer->layer()->invalidateRects(offsetRects);
+
+ if (firstPaintInvalidationTrackingEnabled()) {
+ for (size_t i = 0; i < rects.size(); ++i) {
+ IntRect rect = rects[i].r;
+ rect.move(-offsetFromLayoutObject());
+ m_debugInfo.appendAnnotatedInvalidateRect(rect, rects[i].invalidationReason);
+ }
+ }
+
for (size_t i = 0; i < m_linkHighlights.size(); ++i)
m_linkHighlights[i]->invalidate();
- if (isTrackingPaintInvalidations())
- trackPaintInvalidation(client, rect, invalidationReason);
+ if (isTrackingPaintInvalidations()) {
+ for (size_t i = 0; i < rects.size(); ++i) {
+ IntRect rect = rects[i].r;
+ rect.move(-offsetFromLayoutObject());
+ trackPaintInvalidation(rects[i].client, rect, rects[i].invalidationReason);
+ }
+ }
}
void GraphicsLayer::invalidateDisplayItemClient(const DisplayItemClient& displayItemClient, PaintInvalidationReason invalidationReason)
« no previous file with comments | « third_party/WebKit/Source/platform/graphics/GraphicsLayer.h ('k') | third_party/WebKit/public/platform/WebLayer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698