| Index: Source/core/rendering/RenderLayerCompositor.h
 | 
| ===================================================================
 | 
| --- Source/core/rendering/RenderLayerCompositor.h	(revision 159992)
 | 
| +++ Source/core/rendering/RenderLayerCompositor.h	(working copy)
 | 
| @@ -46,7 +46,8 @@
 | 
|      CompositingUpdateAfterStyleChange,
 | 
|      CompositingUpdateAfterLayout,
 | 
|      CompositingUpdateOnScroll,
 | 
| -    CompositingUpdateOnCompositedScroll
 | 
| +    CompositingUpdateOnCompositedScroll,
 | 
| +    CompositingUpdateFinishAllDeferredWork
 | 
|  };
 | 
|  
 | 
|  // RenderLayerCompositor manages the hierarchy of
 | 
| @@ -91,7 +92,9 @@
 | 
|      void updateCompositingRequirementsState();
 | 
|      void setNeedsUpdateCompositingRequirementsState() { m_needsUpdateCompositingRequirementsState = true; }
 | 
|  
 | 
| -    // Rebuild the tree of compositing layers
 | 
| +    // Main entry point for a full update. As needed, this function will compute compositing requirements,
 | 
| +    // rebuild the composited layer tree, and/or update all the properties assocaited with each layer of the
 | 
| +    // composited layer tree.
 | 
|      void updateCompositingLayers(CompositingUpdateType, RenderLayer* updateRoot = 0);
 | 
|  
 | 
|      // Update the compositing state of the given layer. Returns true if that state changed.
 | 
| @@ -200,7 +203,7 @@
 | 
|      void resetTrackedRepaintRects();
 | 
|      void setTracksRepaints(bool);
 | 
|  
 | 
| -    void setShouldReevaluateCompositingAfterLayout() { m_reevaluateCompositingAfterLayout = true; }
 | 
| +    void setNeedsToRecomputeCompositingRequirements() { m_needsToRecomputeCompositingRequirements = true; }
 | 
|  
 | 
|      // Returns all reasons (direct, indirectly due to subtree, and indirectly due to overlap) that a layer should be composited.
 | 
|      CompositingReasons reasonsForCompositing(const RenderLayer*) const;
 | 
| @@ -238,6 +241,10 @@
 | 
|      void addToOverlapMap(OverlapMap&, RenderLayer*, IntRect& layerBounds, bool& boundsComputed);
 | 
|      void addToOverlapMapRecursive(OverlapMap&, RenderLayer*, RenderLayer* ancestorLayer = 0);
 | 
|  
 | 
| +    // Forces an update for all frames of frame tree recursively. Used only when the mainFrame compositor is ready to
 | 
| +    // finish all deferred work.
 | 
| +    static void finishCompositingUpdateForFrameTree(Frame*);
 | 
| +
 | 
|      // Returns true if any layer's compositing changed
 | 
|      void computeCompositingRequirements(RenderLayer* ancestorLayer, RenderLayer*, OverlapMap*, struct CompositingRecursionData&, bool& layersChanged, bool& descendantHas3DTransform, Vector<RenderLayer*>& unclippedDescendants);
 | 
|  
 | 
| @@ -317,9 +324,9 @@
 | 
|      int m_compositedLayerCount;
 | 
|      bool m_showRepaintCounter;
 | 
|  
 | 
| -    // When true, we have to wait until layout has happened before we can decide whether to enter compositing mode,
 | 
| -    // because only then do we know the final size of plugins and iframes.
 | 
| -    mutable bool m_reevaluateCompositingAfterLayout;
 | 
| +    // FIXME: This should absolutely not be mutable.
 | 
| +    mutable bool m_needsToRecomputeCompositingRequirements;
 | 
| +    bool m_needsToUpdateLayerTreeGeometry;
 | 
|  
 | 
|      bool m_compositing;
 | 
|      bool m_compositingLayersNeedRebuild;
 | 
| 
 |