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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutView.cpp

Issue 1391753005: (WIP) Invalidation during painting (for synchronized painting) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 void LayoutView::paint(const PaintInfo& paintInfo, const LayoutPoint& paintOffse t) const 420 void LayoutView::paint(const PaintInfo& paintInfo, const LayoutPoint& paintOffse t) const
421 { 421 {
422 ViewPainter(*this).paint(paintInfo, paintOffset); 422 ViewPainter(*this).paint(paintInfo, paintOffset);
423 } 423 }
424 424
425 void LayoutView::paintBoxDecorationBackground(const PaintInfo& paintInfo, const LayoutPoint&) const 425 void LayoutView::paintBoxDecorationBackground(const PaintInfo& paintInfo, const LayoutPoint&) const
426 { 426 {
427 ViewPainter(*this).paintBoxDecorationBackground(paintInfo); 427 ViewPainter(*this).paintBoxDecorationBackground(paintInfo);
428 } 428 }
429 429
430 void LayoutView::invalidateTreeIfNeeded(PaintInvalidationState& paintInvalidatio nState) 430 PaintInvalidationReason LayoutView::invalidatePaintIfNeeded(PaintInvalidationSta te& paintInvalidationState, const LayoutBoxModelObject& paintInvalidationContain er)
431 { 431 {
432 ASSERT(!needsLayout()); 432 ASSERT(!needsLayout());
433 433
434 // We specifically need to issue paint invalidations for the viewRect since other layoutObjects 434 // We specifically need to issue paint invalidations for the viewRect since other layoutObjects
435 // short-circuit on full-paint invalidation. 435 // short-circuit on full-paint invalidation.
436 LayoutRect dirtyRect = viewRect(); 436 LayoutRect dirtyRect = viewRect();
437 if (doingFullPaintInvalidation() && !dirtyRect.isEmpty()) { 437 if (doingFullPaintInvalidation() && !dirtyRect.isEmpty()) {
438 const LayoutBoxModelObject& paintInvalidationContainer = paintInvalidati onState.paintInvalidationContainer(); 438 const LayoutBoxModelObject& paintInvalidationContainer = paintInvalidati onState.paintInvalidationContainer();
439 PaintLayer::mapRectToPaintInvalidationBacking(this, &paintInvalidationCo ntainer, dirtyRect, &paintInvalidationState); 439 PaintLayer::mapRectToPaintInvalidationBacking(this, &paintInvalidationCo ntainer, dirtyRect, &paintInvalidationState);
440 invalidatePaintUsingContainer(paintInvalidationContainer, dirtyRect, Pai ntInvalidationFull); 440 invalidatePaintUsingContainer(paintInvalidationContainer, dirtyRect, Pai ntInvalidationFull);
441 invalidateDisplayItemClientsWithPaintInvalidationState(paintInvalidation Container, paintInvalidationState, PaintInvalidationFull); 441 invalidateDisplayItemClientsWithPaintInvalidationState(paintInvalidation Container, paintInvalidationState, PaintInvalidationFull);
442 } 442 }
443 LayoutBlock::invalidateTreeIfNeeded(paintInvalidationState); 443 return LayoutBlock::invalidatePaintIfNeeded(paintInvalidationState, paintInv alidationContainer);
444 } 444 }
445 445
446 static void setShouldDoFullPaintInvalidationForViewAndAllDescendantsInternal(Lay outObject* object) 446 static void setShouldDoFullPaintInvalidationForViewAndAllDescendantsInternal(Lay outObject* object)
447 { 447 {
448 object->setShouldDoFullPaintInvalidation(); 448 object->setShouldDoFullPaintInvalidation();
449 for (LayoutObject* child = object->slowFirstChild(); child; child = child->n extSibling()) { 449 for (LayoutObject* child = object->slowFirstChild(); child; child = child->n extSibling()) {
450 setShouldDoFullPaintInvalidationForViewAndAllDescendantsInternal(child); 450 setShouldDoFullPaintInvalidationForViewAndAllDescendantsInternal(child);
451 } 451 }
452 } 452 }
453 453
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after
997 } 997 }
998 998
999 void LayoutView::sendMediaPositionChangeNotifications(const IntRect& visibleRect ) 999 void LayoutView::sendMediaPositionChangeNotifications(const IntRect& visibleRect )
1000 { 1000 {
1001 for (auto& media : m_mediaForPositionNotification) { 1001 for (auto& media : m_mediaForPositionNotification) {
1002 media->notifyPositionMayHaveChanged(visibleRect); 1002 media->notifyPositionMayHaveChanged(visibleRect);
1003 } 1003 }
1004 } 1004 }
1005 1005
1006 } // namespace blink 1006 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutView.h ('k') | third_party/WebKit/Source/core/layout/PaintInvalidationState.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698