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 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 RootLayerAttachedViaChromeClient, | 159 RootLayerAttachedViaChromeClient, |
160 RootLayerAttachedViaEnclosingFrame | 160 RootLayerAttachedViaEnclosingFrame |
161 }; | 161 }; |
162 | 162 |
163 RootLayerAttachment rootLayerAttachment() const { return m_rootLayerAttachme
nt; } | 163 RootLayerAttachment rootLayerAttachment() const { return m_rootLayerAttachme
nt; } |
164 void updateRootLayerAttachment(); | 164 void updateRootLayerAttachment(); |
165 void updateRootLayerPosition(); | 165 void updateRootLayerPosition(); |
166 | 166 |
167 void setIsInWindow(bool); | 167 void setIsInWindow(bool); |
168 | 168 |
169 void clearMappingForAllRenderLayers(); | |
170 | |
171 // Walk the tree looking for layers with 3d transforms. Useful in case you n
eed | |
172 // to know if there is non-affine content, e.g. for drawing into an image. | |
173 bool has3DContent() const; | |
174 | |
175 static RenderLayerCompositor* frameContentsCompositor(RenderPart*); | 169 static RenderLayerCompositor* frameContentsCompositor(RenderPart*); |
176 // Return true if the layers changed. | 170 // Return true if the layers changed. |
177 static bool parentFrameContentLayers(RenderPart*); | 171 static bool parentFrameContentLayers(RenderPart*); |
178 | 172 |
179 // Update the geometry of the layers used for clipping and scrolling in fram
es. | 173 // Update the geometry of the layers used for clipping and scrolling in fram
es. |
180 void frameViewDidChangeLocation(const IntPoint& contentsOffset); | 174 void frameViewDidChangeLocation(const IntPoint& contentsOffset); |
181 void frameViewDidChangeSize(); | 175 void frameViewDidChangeSize(); |
182 void frameViewDidScroll(); | 176 void frameViewDidScroll(); |
183 void frameViewScrollbarsExistenceDidChange(); | 177 void frameViewScrollbarsExistenceDidChange(); |
184 void rootFixedBackgroundsChanged(); | 178 void rootFixedBackgroundsChanged(); |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 | 260 |
267 void updateCompositingLayersInternal(); | 261 void updateCompositingLayersInternal(); |
268 | 262 |
269 // Returns indirect reasons that a layer should be composited because of som
ething in its subtree. | 263 // Returns indirect reasons that a layer should be composited because of som
ething in its subtree. |
270 CompositingReasons subtreeReasonsForCompositing(RenderObject*, bool hasCompo
sitedDescendants, bool has3DTransformedDescendants) const; | 264 CompositingReasons subtreeReasonsForCompositing(RenderObject*, bool hasCompo
sitedDescendants, bool has3DTransformedDescendants) const; |
271 | 265 |
272 // 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. |
273 bool allocateOrClearCompositedLayerMapping(RenderLayer*, CompositingStateTra
nsitionType compositedLayerUpdate); | 267 bool allocateOrClearCompositedLayerMapping(RenderLayer*, CompositingStateTra
nsitionType compositedLayerUpdate); |
274 bool updateSquashingAssignment(RenderLayer*, SquashingState&, CompositingSta
teTransitionType compositedLayerUpdate); | 268 bool updateSquashingAssignment(RenderLayer*, SquashingState&, CompositingSta
teTransitionType compositedLayerUpdate); |
275 | 269 |
276 void clearMappingForRenderLayerIncludingDescendants(RenderLayer*); | |
277 | |
278 void recursiveRepaintLayer(RenderLayer*); | 270 void recursiveRepaintLayer(RenderLayer*); |
279 | 271 |
280 void addToOverlapMap(OverlapMap&, RenderLayer*, const IntRect& layerBounds); | 272 void addToOverlapMap(OverlapMap&, RenderLayer*, const IntRect& layerBounds); |
281 | 273 |
282 // Forces an update for all frames of frame tree recursively. Used only when
the mainFrame compositor is ready to | 274 // Forces an update for all frames of frame tree recursively. Used only when
the mainFrame compositor is ready to |
283 // finish all deferred work. | 275 // finish all deferred work. |
284 static void finishCompositingUpdateForFrameTree(LocalFrame*); | 276 static void finishCompositingUpdateForFrameTree(LocalFrame*); |
285 | 277 |
286 void computeCompositingRequirements(RenderLayer* ancestorLayer, RenderLayer*
, OverlapMap*, struct CompositingRecursionData&, bool& descendantHas3DTransform,
Vector<RenderLayer*>& unclippedDescendants, IntRect& absoluteDecendantBoundingB
ox); | 278 void computeCompositingRequirements(RenderLayer* ancestorLayer, RenderLayer*
, OverlapMap*, struct CompositingRecursionData&, bool& descendantHas3DTransform,
Vector<RenderLayer*>& unclippedDescendants, IntRect& absoluteDecendantBoundingB
ox); |
287 | 279 |
288 // Defines which RenderLayers will paint into which composited backings, by
allocating and destroying CompositedLayerMappings as needed. | 280 // Defines which RenderLayers will paint into which composited backings, by
allocating and destroying CompositedLayerMappings as needed. |
289 void assignLayersToBackings(RenderLayer*, bool& layersChanged); | 281 void assignLayersToBackings(RenderLayer*, bool& layersChanged); |
290 void assignLayersToBackingsInternal(RenderLayer*, SquashingState&, bool& lay
ersChanged, RenderLayer* clippingAncestor); | 282 void assignLayersToBackingsInternal(RenderLayer*, SquashingState&, bool& lay
ersChanged, RenderLayer* clippingAncestor); |
291 | 283 |
292 // Allocates, sets up hierarchy, and sets appropriate properties for the Gra
phicsLayers that correspond to a given | |
293 // composited RenderLayer. Does nothing if the given RenderLayer does not ha
ve a CompositedLayerMapping. | |
294 void updateGraphicsLayersMappedToRenderLayer(RenderLayer*); | |
295 | |
296 // Recurses down the tree, updating layer geometry only. | |
297 void updateLayerTreeGeometry(RenderLayer*); | |
298 | |
299 // Hook compositing layers together | 284 // Hook compositing layers together |
300 void setCompositingParent(RenderLayer* childLayer, RenderLayer* parentLayer)
; | 285 void setCompositingParent(RenderLayer* childLayer, RenderLayer* parentLayer)
; |
301 void removeCompositedChildren(RenderLayer*); | 286 void removeCompositedChildren(RenderLayer*); |
302 | 287 |
303 bool layerHas3DContent(const RenderLayer*) const; | |
304 bool isRunningAcceleratedTransformAnimation(RenderObject*) const; | 288 bool isRunningAcceleratedTransformAnimation(RenderObject*) const; |
305 | 289 |
306 bool hasAnyAdditionalCompositedLayers(const RenderLayer* rootLayer) const; | 290 bool hasAnyAdditionalCompositedLayers(const RenderLayer* rootLayer) const; |
307 | 291 |
308 void ensureRootLayer(); | 292 void ensureRootLayer(); |
309 void destroyRootLayer(); | 293 void destroyRootLayer(); |
310 | 294 |
311 void attachRootLayer(RootLayerAttachment); | 295 void attachRootLayer(RootLayerAttachment); |
312 void detachRootLayer(); | 296 void detachRootLayer(); |
313 | 297 |
314 bool isMainFrame() const; | 298 bool isMainFrame() const; |
315 | 299 |
316 void updateOverflowControlsLayers(); | 300 void updateOverflowControlsLayers(); |
317 | 301 |
318 void notifyIFramesOfCompositingChange(); | 302 void notifyIFramesOfCompositingChange(); |
319 | 303 |
320 Page* page() const; | 304 Page* page() const; |
321 | 305 |
322 GraphicsLayerFactory* graphicsLayerFactory() const; | 306 GraphicsLayerFactory* graphicsLayerFactory() const; |
323 ScrollingCoordinator* scrollingCoordinator() const; | 307 ScrollingCoordinator* scrollingCoordinator() const; |
324 | 308 |
325 void addViewportConstrainedLayer(RenderLayer*); | 309 void addViewportConstrainedLayer(RenderLayer*); |
326 | 310 |
327 FixedPositionViewportConstraints computeFixedViewportConstraints(RenderLayer
*) const; | |
328 StickyPositionViewportConstraints computeStickyViewportConstraints(RenderLay
er*) const; | |
329 | |
330 bool requiresHorizontalScrollbarLayer() const; | 311 bool requiresHorizontalScrollbarLayer() const; |
331 bool requiresVerticalScrollbarLayer() const; | 312 bool requiresVerticalScrollbarLayer() const; |
332 bool requiresScrollCornerLayer() const; | 313 bool requiresScrollCornerLayer() const; |
333 #if USE(RUBBER_BANDING) | 314 #if USE(RUBBER_BANDING) |
334 bool requiresOverhangLayers() const; | 315 bool requiresOverhangLayers() const; |
335 #endif | 316 #endif |
336 | 317 |
337 void applyUpdateLayerCompositingStateChickenEggHacks(RenderLayer*, Compositi
ngStateTransitionType compositedLayerUpdate); | 318 void applyUpdateLayerCompositingStateChickenEggHacks(RenderLayer*, Compositi
ngStateTransitionType compositedLayerUpdate); |
338 void assignLayersToBackingsForReflectionLayer(RenderLayer* reflectionLayer,
bool& layersChanged); | 319 void assignLayersToBackingsForReflectionLayer(RenderLayer* reflectionLayer,
bool& layersChanged); |
339 | 320 |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 OwnPtr<GraphicsLayer> m_layerForScrollCorner; | 366 OwnPtr<GraphicsLayer> m_layerForScrollCorner; |
386 #if USE(RUBBER_BANDING) | 367 #if USE(RUBBER_BANDING) |
387 OwnPtr<GraphicsLayer> m_layerForOverhangShadow; | 368 OwnPtr<GraphicsLayer> m_layerForOverhangShadow; |
388 #endif | 369 #endif |
389 }; | 370 }; |
390 | 371 |
391 | 372 |
392 } // namespace WebCore | 373 } // namespace WebCore |
393 | 374 |
394 #endif // RenderLayerCompositor_h | 375 #endif // RenderLayerCompositor_h |
OLD | NEW |