Changeset 155131 in webkit
- Timestamp:
- Sep 5, 2013, 10:56:58 AM (12 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r155128 r155131 1 2013-09-05 Simon Fraser <simon.fraser@apple.com> 2 3 Fix repaint issue on "paints into ancestor" filtered layers 4 https://bugs.webkit.org/show_bug.cgi?id=120780 5 <rdar://problem/14884148> 6 7 Reviewed by Tim Horton. 8 9 Ref test for opacity change on a filtered layer which paints into its compositing ancestor. 10 11 * compositing/filters/opacity-change-on-filtered-paints-into-ancestor-expected.html: Added. 12 * compositing/filters/opacity-change-on-filtered-paints-into-ancestor.html: Added. 13 1 14 2013-09-05 Danilo Cesar Lemes de Paula <danilo.cesar@collabora.co.uk> 2 15 -
trunk/Source/WebCore/ChangeLog
r155130 r155131 1 2013-09-05 Simon Fraser <simon.fraser@apple.com> 2 3 Fix repaint issue on "paints into ancestor" filtered layers 4 https://bugs.webkit.org/show_bug.cgi?id=120780 5 6 Reviewed by Tim Horton. 7 8 When a repaint happened on a layer with a filter, and which paints into 9 its compositing ancestor, we'd repaint the wrong layer (and assert). 10 11 Fix by ensuring that RenderLayer::enclosingFilterLayer() takes paintsIntoCompositedAncestor() 12 into account, by adding a function that we share between three callers who 13 check isComposited() && !paintsIntoCompositedAncestor(). I didn't use a function 14 on RenderLayer, because I wanted it to be inline but to not #include RenderLayerBacking 15 in RenderLayer.h. 16 17 Test: compositing/filters/opacity-change-on-filtered-paints-into-ancestor.html 18 19 * dom/Node.cpp: Drive-by removal of #include "RenderLayer.h" 20 * rendering/RenderLayer.cpp: 21 (WebCore::compositedWithOwnBackingStore): 22 (WebCore::RenderLayer::enclosingCompositingLayerForRepaint): 23 (WebCore::RenderLayer::enclosingFilterRepaintLayer): 24 (WebCore::RenderLayer::clippingRootForPainting): 25 1 26 2013-09-05 Brent Fulgham <bfulgham@apple.com> 2 27 -
trunk/Source/WebCore/dom/Node.cpp
r155015 r155131 118 118 #include <wtf/text/StringBuilder.h> 119 119 120 #ifndef NDEBUG121 #include "RenderLayer.h"122 #endif123 124 120 #if ENABLE(GESTURE_EVENTS) 125 121 #include "GestureEvent.h" -
trunk/Source/WebCore/rendering/RenderLayer.cpp
r155047 r155131 1418 1418 #if USE(ACCELERATED_COMPOSITING) 1419 1419 1420 static bool compositedWithOwnBackingStore(const RenderLayer* layer) 1421 { 1422 return layer->isComposited() && !layer->backing()->paintsIntoCompositedAncestor(); 1423 } 1424 1420 1425 RenderLayer* RenderLayer::enclosingCompositingLayer(IncludeSelfOrNot includeSelf) const 1421 1426 { … … 1437 1442 1438 1443 for (const RenderLayer* curr = compositingContainer(this); curr; curr = compositingContainer(curr)) { 1439 if (c urr->isComposited() && !curr->backing()->paintsIntoCompositedAncestor())1444 if (compositedWithOwnBackingStore(curr)) 1440 1445 return const_cast<RenderLayer*>(curr); 1441 1446 } … … 1462 1467 { 1463 1468 for (const RenderLayer* curr = this; curr; curr = curr->parent()) { 1464 if ((curr != this && curr->requiresFullLayerImageForFilters()) || c urr->isComposited() || curr->isRootLayer())1469 if ((curr != this && curr->requiresFullLayerImageForFilters()) || compositedWithOwnBackingStore(curr) || curr->isRootLayer()) 1465 1470 return const_cast<RenderLayer*>(curr); 1466 1471 } … … 1529 1534 1530 1535 #endif 1531 1536 1532 1537 RenderLayer* RenderLayer::clippingRootForPainting() const 1533 1538 { … … 1546 1551 if (current->transform() 1547 1552 #if USE(ACCELERATED_COMPOSITING) 1548 || (current->isComposited() && !current->backing()->paintsIntoCompositedAncestor())1553 || compositedWithOwnBackingStore(current) 1549 1554 #endif 1550 1555 )
Note:
See TracChangeset
for help on using the changeset viewer.