| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (C) 2009, 2010 Apple Inc. All rights reserved. | 2  * Copyright (C) 2009, 2010 Apple Inc. All rights reserved. | 
| 3  * | 3  * | 
| 4  * Redistribution and use in source and binary forms, with or without | 4  * Redistribution and use in source and binary forms, with or without | 
| 5  * modification, are permitted provided that the following conditions | 5  * modification, are permitted provided that the following conditions | 
| 6  * are met: | 6  * are met: | 
| 7  * 1. Redistributions of source code must retain the above copyright | 7  * 1. Redistributions of source code must retain the above copyright | 
| 8  *    notice, this list of conditions and the following disclaimer. | 8  *    notice, this list of conditions and the following disclaimer. | 
| 9  * 2. Redistributions in binary form must reproduce the above copyright | 9  * 2. Redistributions in binary form must reproduce the above copyright | 
| 10  *    notice, this list of conditions and the following disclaimer in the | 10  *    notice, this list of conditions and the following disclaimer in the | 
| (...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 577     setCompositingLayersNeedRebuild(); | 577     setCompositingLayersNeedRebuild(); | 
| 578 } | 578 } | 
| 579 | 579 | 
| 580 void RenderLayerCompositor::layerWillBeRemoved(RenderLayer* parent, RenderLayer*
       child) | 580 void RenderLayerCompositor::layerWillBeRemoved(RenderLayer* parent, RenderLayer*
       child) | 
| 581 { | 581 { | 
| 582     if (!child->isComposited() || parent->renderer()->documentBeingDestroyed()) | 582     if (!child->isComposited() || parent->renderer()->documentBeingDestroyed()) | 
| 583         return; | 583         return; | 
| 584 | 584 | 
| 585     setCompositingParent(child, 0); | 585     setCompositingParent(child, 0); | 
| 586 | 586 | 
| 587     RenderLayer* compLayer = parent->enclosingCompositingLayerForRepaint(); | 587     RenderLayer* compLayer = parent->enclosingCompositingLayer(); | 
| 588     if (compLayer) { | 588     if (compLayer) { | 
| 589         ASSERT(compLayer->backing()); | 589         ASSERT(compLayer->backing()); | 
| 590         LayoutRect compBounds = child->backing()->compositedBounds(); | 590         LayoutRect compBounds = child->backing()->compositedBounds(); | 
| 591 | 591 | 
| 592         LayoutPoint offset; | 592         LayoutPoint offset; | 
| 593         child->convertToLayerCoords(compLayer, offset); | 593         child->convertToLayerCoords(compLayer, offset); | 
| 594         compBounds.moveBy(offset); | 594         compBounds.moveBy(offset); | 
| 595 | 595 | 
| 596         compLayer->setBackingNeedsRepaintInRect(compBounds); | 596         compLayer->setBackingNeedsRepaintInRect(compBounds); | 
| 597 | 597 | 
| (...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1196 | 1196 | 
| 1197 | 1197 | 
| 1198 void RenderLayerCompositor::repaintCompositedLayersAbsoluteRect(const IntRect& a
      bsRect) | 1198 void RenderLayerCompositor::repaintCompositedLayersAbsoluteRect(const IntRect& a
      bsRect) | 
| 1199 { | 1199 { | 
| 1200     recursiveRepaintLayerRect(rootRenderLayer(), absRect); | 1200     recursiveRepaintLayerRect(rootRenderLayer(), absRect); | 
| 1201 } | 1201 } | 
| 1202 | 1202 | 
| 1203 void RenderLayerCompositor::recursiveRepaintLayerRect(RenderLayer* layer, const 
      IntRect& rect) | 1203 void RenderLayerCompositor::recursiveRepaintLayerRect(RenderLayer* layer, const 
      IntRect& rect) | 
| 1204 { | 1204 { | 
| 1205     // FIXME: This method does not work correctly with transforms. | 1205     // FIXME: This method does not work correctly with transforms. | 
| 1206     if (layer->isComposited() && !layer->backing()->paintsIntoCompositedAncestor
      ()) | 1206     if (layer->isComposited()) | 
| 1207         layer->setBackingNeedsRepaintInRect(rect); | 1207         layer->setBackingNeedsRepaintInRect(rect); | 
| 1208 | 1208 | 
| 1209 #if !ASSERT_DISABLED | 1209 #if !ASSERT_DISABLED | 
| 1210     LayerListMutationDetector mutationChecker(layer); | 1210     LayerListMutationDetector mutationChecker(layer); | 
| 1211 #endif | 1211 #endif | 
| 1212 | 1212 | 
| 1213     if (layer->hasCompositingDescendant()) { | 1213     if (layer->hasCompositingDescendant()) { | 
| 1214         if (Vector<RenderLayer*>* negZOrderList = layer->negZOrderList()) { | 1214         if (Vector<RenderLayer*>* negZOrderList = layer->negZOrderList()) { | 
| 1215             size_t listSize = negZOrderList->size(); | 1215             size_t listSize = negZOrderList->size(); | 
| 1216             for (size_t i = 0; i < listSize; ++i) { | 1216             for (size_t i = 0; i < listSize; ++i) { | 
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1391 bool RenderLayerCompositor::requiresCompositingLayer(const RenderLayer* layer) c
      onst | 1391 bool RenderLayerCompositor::requiresCompositingLayer(const RenderLayer* layer) c
      onst | 
| 1392 { | 1392 { | 
| 1393     RenderObject* renderer = layer->renderer(); | 1393     RenderObject* renderer = layer->renderer(); | 
| 1394     // The compositing state of a reflection should match that of its reflected 
      layer. | 1394     // The compositing state of a reflection should match that of its reflected 
      layer. | 
| 1395     if (layer->isReflection()) { | 1395     if (layer->isReflection()) { | 
| 1396         renderer = renderer->parent(); // The RenderReplica's parent is the obje
      ct being reflected. | 1396         renderer = renderer->parent(); // The RenderReplica's parent is the obje
      ct being reflected. | 
| 1397         layer = toRenderBoxModelObject(renderer)->layer(); | 1397         layer = toRenderBoxModelObject(renderer)->layer(); | 
| 1398     } | 1398     } | 
| 1399     // The root layer always has a compositing layer, but it may not have backin
      g. | 1399     // The root layer always has a compositing layer, but it may not have backin
      g. | 
| 1400     return requiresCompositingForTransform(renderer) | 1400     return requiresCompositingForTransform(renderer) | 
| 1401         || requiresCompositingForVideo(renderer) | 1401              || requiresCompositingForVideo(renderer) | 
| 1402         || requiresCompositingForCanvas(renderer) | 1402              || requiresCompositingForCanvas(renderer) | 
| 1403         || requiresCompositingForPlugin(renderer) | 1403              || requiresCompositingForPlugin(renderer) | 
| 1404         || requiresCompositingForFrame(renderer) | 1404              || requiresCompositingForFrame(renderer) | 
| 1405         || (canRender3DTransforms() && renderer->style()->backfaceVisibility() =
      = BackfaceVisibilityHidden) | 1405              || (canRender3DTransforms() && renderer->style()->backfaceVisibilit
      y() == BackfaceVisibilityHidden) | 
| 1406         || clipsCompositingDescendants(layer) | 1406              || clipsCompositingDescendants(layer) | 
| 1407         || requiresCompositingForAnimation(renderer) | 1407              || requiresCompositingForAnimation(renderer) | 
| 1408         || requiresCompositingForFilters(renderer) | 1408              || requiresCompositingForFilters(renderer) | 
| 1409         || requiresCompositingForPosition(renderer, layer); | 1409              || requiresCompositingForPosition(renderer, layer); | 
| 1410 } | 1410 } | 
| 1411 | 1411 | 
| 1412 bool RenderLayerCompositor::canBeComposited(const RenderLayer* layer) const | 1412 bool RenderLayerCompositor::canBeComposited(const RenderLayer* layer) const | 
| 1413 { | 1413 { | 
| 1414     return m_hasAcceleratedCompositing && layer->isSelfPaintingLayer(); | 1414     return m_hasAcceleratedCompositing && layer->isSelfPaintingLayer(); | 
| 1415 } | 1415 } | 
| 1416 | 1416 | 
| 1417 bool RenderLayerCompositor::requiresOwnBackingStore(const RenderLayer* layer, co
      nst RenderLayer* compositingAncestorLayer) const |  | 
| 1418 { |  | 
| 1419     RenderObject* renderer = layer->renderer(); |  | 
| 1420     if (compositingAncestorLayer |  | 
| 1421         && !(compositingAncestorLayer->backing()->graphicsLayer()->drawsContent(
      ) |  | 
| 1422             || compositingAncestorLayer->backing()->paintsIntoWindow() |  | 
| 1423             || compositingAncestorLayer->backing()->paintsIntoCompositedAncestor
      ())) |  | 
| 1424         return true; |  | 
| 1425 |  | 
| 1426     return layer->isRootLayer() |  | 
| 1427         || layer->transform() // note: excludes perspective and transformStyle3D
      . |  | 
| 1428         || requiresCompositingForVideo(renderer) |  | 
| 1429         || requiresCompositingForCanvas(renderer) |  | 
| 1430         || requiresCompositingForPlugin(renderer) |  | 
| 1431         || requiresCompositingForFrame(renderer) |  | 
| 1432         || (canRender3DTransforms() && renderer->style()->backfaceVisibility() =
      = BackfaceVisibilityHidden) |  | 
| 1433         || requiresCompositingForAnimation(renderer) |  | 
| 1434         || requiresCompositingForFilters(renderer) |  | 
| 1435         || requiresCompositingForPosition(renderer, layer) |  | 
| 1436         || renderer->isTransparent() |  | 
| 1437         || renderer->hasMask() |  | 
| 1438         || renderer->hasReflection() |  | 
| 1439         || renderer->hasFilter() |  | 
| 1440         || layer->mustOverlapCompositedLayers(); |  | 
| 1441 } |  | 
| 1442 |  | 
| 1443 #if !LOG_DISABLED | 1417 #if !LOG_DISABLED | 
| 1444 const char* RenderLayerCompositor::reasonForCompositing(const RenderLayer* layer
      ) | 1418 const char* RenderLayerCompositor::reasonForCompositing(const RenderLayer* layer
      ) | 
| 1445 { | 1419 { | 
| 1446     RenderObject* renderer = layer->renderer(); | 1420     RenderObject* renderer = layer->renderer(); | 
| 1447     if (layer->isReflection()) { | 1421     if (layer->isReflection()) { | 
| 1448         renderer = renderer->parent(); | 1422         renderer = renderer->parent(); | 
| 1449         layer = toRenderBoxModelObject(renderer)->layer(); | 1423         layer = toRenderBoxModelObject(renderer)->layer(); | 
| 1450     } | 1424     } | 
| 1451 | 1425 | 
| 1452     if (renderer->hasTransform() && renderer->style()->hasPerspective()) | 1426     if (renderer->hasTransform() && renderer->style()->hasPerspective()) | 
| (...skipping 833 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2286         if (Page* page = frame->page()) | 2260         if (Page* page = frame->page()) | 
| 2287             return page->scrollingCoordinator(); | 2261             return page->scrollingCoordinator(); | 
| 2288     } | 2262     } | 
| 2289 | 2263 | 
| 2290     return 0; | 2264     return 0; | 
| 2291 } | 2265 } | 
| 2292 | 2266 | 
| 2293 } // namespace WebCore | 2267 } // namespace WebCore | 
| 2294 | 2268 | 
| 2295 #endif // USE(ACCELERATED_COMPOSITING) | 2269 #endif // USE(ACCELERATED_COMPOSITING) | 
| OLD | NEW | 
|---|