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

Side by Side Diff: Source/core/rendering/RenderObject.cpp

Issue 445793002: Allow paint invalidation containers to cross frame boundaries. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Use PaintInvalidationState. Created 6 years, 4 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Dirk Mueller (mueller@kde.org) 4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed.
7 * Copyright (C) 2009 Google Inc. All rights reserved. 7 * Copyright (C) 2009 Google Inc. All rights reserved.
8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 1404 matching lines...) Expand 10 before | Expand all | Expand 10 after
1415 { 1415 {
1416 if (!isRooted()) 1416 if (!isRooted())
1417 return 0; 1417 return 0;
1418 1418
1419 return adjustCompositedContainerForSpecialAncestors(enclosingCompositedConta iner()); 1419 return adjustCompositedContainerForSpecialAncestors(enclosingCompositedConta iner());
1420 } 1420 }
1421 1421
1422 const RenderLayerModelObject* RenderObject::enclosingCompositedContainer() const 1422 const RenderLayerModelObject* RenderObject::enclosingCompositedContainer() const
1423 { 1423 {
1424 RenderLayerModelObject* container = 0; 1424 RenderLayerModelObject* container = 0;
1425 if (view()->usesCompositing()) { 1425 // FIXME: CompositingState is not necessarily up to date for many callers of this function.
1426 // FIXME: CompositingState is not necessarily up to date for many caller s of this function. 1426 DisableCompositingQueryAsserts disabler;
1427 DisableCompositingQueryAsserts disabler;
1428 1427
1429 if (RenderLayer* compositingLayer = enclosingLayer()->enclosingLayerForP aintInvalidation()) 1428 if (RenderLayer* compositingLayer = enclosingLayer()->enclosingLayerForPaint InvalidationCrossingFrameBoundaries())
1430 container = compositingLayer->renderer(); 1429 container = compositingLayer->renderer();
1431 }
1432 return container; 1430 return container;
1433 } 1431 }
1434 1432
1435 const RenderLayerModelObject* RenderObject::adjustCompositedContainerForSpecialA ncestors(const RenderLayerModelObject* paintInvalidationContainer) const 1433 const RenderLayerModelObject* RenderObject::adjustCompositedContainerForSpecialA ncestors(const RenderLayerModelObject* paintInvalidationContainer) const
1436 { 1434 {
1437 1435
1438 if (document().view()->hasSoftwareFilters()) { 1436 if (document().view()->hasSoftwareFilters()) {
1439 if (RenderLayer* enclosingFilterLayer = enclosingLayer()->enclosingFilte rLayer()) 1437 if (RenderLayer* enclosingFilterLayer = enclosingLayer()->enclosingFilte rLayer())
1440 return enclosingFilterLayer->renderer(); 1438 return enclosingFilterLayer->renderer();
1441 } 1439 }
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1501 if (paintInvalidationContainer->isRenderFlowThread()) { 1499 if (paintInvalidationContainer->isRenderFlowThread()) {
1502 toRenderFlowThread(paintInvalidationContainer)->repaintRectangleInRegion s(r); 1500 toRenderFlowThread(paintInvalidationContainer)->repaintRectangleInRegion s(r);
1503 return; 1501 return;
1504 } 1502 }
1505 1503
1506 if (paintInvalidationContainer->hasFilter() && paintInvalidationContainer->l ayer()->requiresFullLayerImageForFilters()) { 1504 if (paintInvalidationContainer->hasFilter() && paintInvalidationContainer->l ayer()->requiresFullLayerImageForFilters()) {
1507 paintInvalidationContainer->layer()->repainter().setFilterBackendNeedsRe paintingInRect(r); 1505 paintInvalidationContainer->layer()->repainter().setFilterBackendNeedsRe paintingInRect(r);
1508 return; 1506 return;
1509 } 1507 }
1510 1508
1511 RenderView* v = view();
1512 if (paintInvalidationContainer->isRenderView()) { 1509 if (paintInvalidationContainer->isRenderView()) {
1513 ASSERT(paintInvalidationContainer == v); 1510 toRenderView(paintInvalidationContainer)->invalidatePaintForRectangle(r) ;
1514 v->invalidatePaintForRectangle(r);
1515 return; 1511 return;
1516 } 1512 }
1517 1513
1518 if (v->usesCompositing()) { 1514 if (view()->usesCompositing()) {
1519 ASSERT(paintInvalidationContainer->hasLayer() && (paintInvalidationConta iner->layer()->compositingState() == PaintsIntoOwnBacking || paintInvalidationCo ntainer->layer()->compositingState() == PaintsIntoGroupedBacking)); 1515 ASSERT(paintInvalidationContainer->hasLayer() && (paintInvalidationConta iner->layer()->compositingState() == PaintsIntoOwnBacking || paintInvalidationCo ntainer->layer()->compositingState() == PaintsIntoGroupedBacking));
1520 paintInvalidationContainer->layer()->repainter().setBackingNeedsRepaintI nRect(r); 1516 paintInvalidationContainer->layer()->repainter().setBackingNeedsRepaintI nRect(r);
1521 } 1517 }
1522 } 1518 }
1523 1519
1524 void RenderObject::paintInvalidationForWholeRenderer() const 1520 void RenderObject::paintInvalidationForWholeRenderer() const
1525 { 1521 {
1526 if (!isRooted()) 1522 if (!isRooted())
1527 return; 1523 return;
1528 1524
(...skipping 1928 matching lines...) Expand 10 before | Expand all | Expand 10 after
3457 { 3453 {
3458 if (object1) { 3454 if (object1) {
3459 const blink::RenderObject* root = object1; 3455 const blink::RenderObject* root = object1;
3460 while (root->parent()) 3456 while (root->parent())
3461 root = root->parent(); 3457 root = root->parent();
3462 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); 3458 root->showRenderTreeAndMark(object1, "*", object2, "-", 0);
3463 } 3459 }
3464 } 3460 }
3465 3461
3466 #endif 3462 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698