OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009 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 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 // RenderLayerCompositor manages the hierarchy of | 55 // RenderLayerCompositor manages the hierarchy of |
56 // composited RenderLayers. It determines which RenderLayers | 56 // composited RenderLayers. It determines which RenderLayers |
57 // become compositing, and creates and maintains a hierarchy of | 57 // become compositing, and creates and maintains a hierarchy of |
58 // GraphicsLayers based on the RenderLayer painting order. | 58 // GraphicsLayers based on the RenderLayer painting order. |
59 // | 59 // |
60 // There is one RenderLayerCompositor per RenderView. | 60 // There is one RenderLayerCompositor per RenderView. |
61 | 61 |
62 class RenderLayerCompositor FINAL : public GraphicsLayerClient { | 62 class RenderLayerCompositor FINAL : public GraphicsLayerClient { |
63 WTF_MAKE_FAST_ALLOCATED; | 63 WTF_MAKE_FAST_ALLOCATED; |
64 public: | 64 public: |
| 65 enum BoundsUpdateType { |
| 66 DoNotForceUpdate, |
| 67 ForceUpdate, |
| 68 }; |
| 69 |
65 // FIXME: This constructor should take a reference. | 70 // FIXME: This constructor should take a reference. |
66 explicit RenderLayerCompositor(RenderView&); | 71 explicit RenderLayerCompositor(RenderView&); |
67 virtual ~RenderLayerCompositor(); | 72 virtual ~RenderLayerCompositor(); |
68 | 73 |
69 // Return true if this RenderView is in "compositing mode" (i.e. has one or
more | 74 // Return true if this RenderView is in "compositing mode" (i.e. has one or
more |
70 // composited RenderLayers) | 75 // composited RenderLayers) |
71 bool inCompositingMode() const { return m_compositing; } | 76 bool inCompositingMode() const { return m_compositing; } |
72 // This will make a compositing layer at the root automatically, and hook up
to | 77 // This will make a compositing layer at the root automatically, and hook up
to |
73 // the native view/window system. | 78 // the native view/window system. |
74 void enableCompositingMode(bool enable = true); | 79 void enableCompositingMode(bool enable = true); |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
259 CompositingReasons subtreeReasonsForCompositing(RenderObject*, bool hasCompo
sitedDescendants, bool has3DTransformedDescendants) const; | 264 CompositingReasons subtreeReasonsForCompositing(RenderObject*, bool hasCompo
sitedDescendants, bool has3DTransformedDescendants) const; |
260 | 265 |
261 // Make or destroy the CompositedLayerMapping for this layer; returns true i
f the compositedLayerMapping changed. | 266 // Make or destroy the CompositedLayerMapping for this layer; returns true i
f the compositedLayerMapping changed. |
262 bool allocateOrClearCompositedLayerMapping(RenderLayer*, CompositingStateTra
nsitionType compositedLayerUpdate); | 267 bool allocateOrClearCompositedLayerMapping(RenderLayer*, CompositingStateTra
nsitionType compositedLayerUpdate); |
263 bool updateSquashingAssignment(RenderLayer*, SquashingState&, CompositingSta
teTransitionType compositedLayerUpdate); | 268 bool updateSquashingAssignment(RenderLayer*, SquashingState&, CompositingSta
teTransitionType compositedLayerUpdate); |
264 | 269 |
265 void clearMappingForRenderLayerIncludingDescendants(RenderLayer*); | 270 void clearMappingForRenderLayerIncludingDescendants(RenderLayer*); |
266 | 271 |
267 void recursiveRepaintLayer(RenderLayer*); | 272 void recursiveRepaintLayer(RenderLayer*); |
268 | 273 |
269 void addToOverlapMap(OverlapMap&, RenderLayer*, IntRect& layerBounds); | 274 void addToOverlapMap(OverlapMap&, RenderLayer*, const IntRect& layerBounds); |
270 | 275 |
271 // Forces an update for all frames of frame tree recursively. Used only when
the mainFrame compositor is ready to | 276 // Forces an update for all frames of frame tree recursively. Used only when
the mainFrame compositor is ready to |
272 // finish all deferred work. | 277 // finish all deferred work. |
273 static void finishCompositingUpdateForFrameTree(LocalFrame*); | 278 static void finishCompositingUpdateForFrameTree(LocalFrame*); |
274 | 279 |
275 void computeCompositingRequirements(RenderLayer* ancestorLayer, RenderLayer*
, OverlapMap*, struct CompositingRecursionData&, bool& descendantHas3DTransform,
Vector<RenderLayer*>& unclippedDescendants, IntRect& absoluteDecendantBoundingB
ox); | 280 void computeCompositingRequirements(RenderLayer* ancestorLayer, RenderLayer*
, OverlapMap*, struct CompositingRecursionData&, bool& descendantHas3DTransform,
Vector<RenderLayer*>& unclippedDescendants, IntRect& absoluteDecendantBoundingB
ox); |
276 | 281 |
277 // Defines which RenderLayers will paint into which composited backings, by
allocating and destroying CompositedLayerMappings as needed. | 282 // Defines which RenderLayers will paint into which composited backings, by
allocating and destroying CompositedLayerMappings as needed. |
278 void assignLayersToBackings(RenderLayer*, bool& layersChanged); | 283 void assignLayersToBackings(RenderLayer*, bool& layersChanged); |
279 void assignLayersToBackingsInternal(RenderLayer*, SquashingState&, bool& lay
ersChanged, RenderLayer* clippingAncestor); | 284 void assignLayersToBackingsInternal(RenderLayer*, SquashingState&, bool& lay
ersChanged, RenderLayer* clippingAncestor); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
336 CompositingReasonFinder m_compositingReasonFinder; | 341 CompositingReasonFinder m_compositingReasonFinder; |
337 | 342 |
338 bool m_hasAcceleratedCompositing; | 343 bool m_hasAcceleratedCompositing; |
339 bool m_showRepaintCounter; | 344 bool m_showRepaintCounter; |
340 | 345 |
341 // FIXME: This should absolutely not be mutable. | 346 // FIXME: This should absolutely not be mutable. |
342 mutable bool m_needsToRecomputeCompositingRequirements; | 347 mutable bool m_needsToRecomputeCompositingRequirements; |
343 bool m_needsToUpdateLayerTreeGeometry; | 348 bool m_needsToUpdateLayerTreeGeometry; |
344 GraphicsLayerUpdater::UpdateType m_pendingUpdateType; | 349 GraphicsLayerUpdater::UpdateType m_pendingUpdateType; |
345 | 350 |
| 351 RenderLayerCompositor::BoundsUpdateType m_recomputeLayerBoundsUpdateType; |
| 352 |
| 353 bool m_canUseCachedLayerBoundingBoxes; |
346 bool m_compositing; | 354 bool m_compositing; |
347 bool m_compositingLayersNeedRebuild; | 355 bool m_compositingLayersNeedRebuild; |
348 bool m_forceCompositingMode; | 356 bool m_forceCompositingMode; |
349 bool m_needsUpdateCompositingRequirementsState; | 357 bool m_needsUpdateCompositingRequirementsState; |
350 | 358 |
351 bool m_isTrackingRepaints; // Used for testing. | 359 bool m_isTrackingRepaints; // Used for testing. |
352 | 360 |
353 RootLayerAttachment m_rootLayerAttachment; | 361 RootLayerAttachment m_rootLayerAttachment; |
354 | 362 |
355 // Enclosing container layer, which clips for iframe content | 363 // Enclosing container layer, which clips for iframe content |
(...skipping 16 matching lines...) Expand all Loading... |
372 OwnPtr<GraphicsLayer> m_layerForScrollCorner; | 380 OwnPtr<GraphicsLayer> m_layerForScrollCorner; |
373 #if USE(RUBBER_BANDING) | 381 #if USE(RUBBER_BANDING) |
374 OwnPtr<GraphicsLayer> m_layerForOverhangShadow; | 382 OwnPtr<GraphicsLayer> m_layerForOverhangShadow; |
375 #endif | 383 #endif |
376 }; | 384 }; |
377 | 385 |
378 | 386 |
379 } // namespace WebCore | 387 } // namespace WebCore |
380 | 388 |
381 #endif // RenderLayerCompositor_h | 389 #endif // RenderLayerCompositor_h |
OLD | NEW |