Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: Source/core/rendering/compositing/RenderLayerCompositor.h

Issue 215063006: Separate the geometry update from rebuilding the GraphicsLayer tree (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 void setTracksRepaints(bool); 183 void setTracksRepaints(bool);
184 184
185 void setNeedsToRecomputeCompositingRequirements() { m_needsToRecomputeCompos itingRequirements = true; } 185 void setNeedsToRecomputeCompositingRequirements() { m_needsToRecomputeCompos itingRequirements = true; }
186 186
187 virtual String debugName(const GraphicsLayer*) OVERRIDE; 187 virtual String debugName(const GraphicsLayer*) OVERRIDE;
188 188
189 void updateStyleDeterminedCompositingReasons(RenderLayer*); 189 void updateStyleDeterminedCompositingReasons(RenderLayer*);
190 190
191 void scheduleAnimationIfNeeded(); 191 void scheduleAnimationIfNeeded();
192 192
193 // Whether the layer could ever be composited.
194 bool canBeComposited(const RenderLayer*) const;
195
193 private: 196 private:
194 class OverlapMap; 197 class OverlapMap;
195 198
196 enum CompositingStateTransitionType { 199 enum CompositingStateTransitionType {
197 NoCompositingStateChange, 200 NoCompositingStateChange,
198 AllocateOwnCompositedLayerMapping, 201 AllocateOwnCompositedLayerMapping,
199 RemoveOwnCompositedLayerMapping, 202 RemoveOwnCompositedLayerMapping,
200 PutInSquashingLayer, 203 PutInSquashingLayer,
201 RemoveFromSquashingLayer 204 RemoveFromSquashingLayer
202 }; 205 };
(...skipping 28 matching lines...) Expand all
231 bool updateLayerIfViewportConstrained(RenderLayer*); 234 bool updateLayerIfViewportConstrained(RenderLayer*);
232 235
233 // GraphicsLayerClient implementation 236 // GraphicsLayerClient implementation
234 virtual void notifyAnimationStarted(const GraphicsLayer*, double) OVERRIDE { } 237 virtual void notifyAnimationStarted(const GraphicsLayer*, double) OVERRIDE { }
235 virtual void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsL ayerPaintingPhase, const IntRect&) OVERRIDE; 238 virtual void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsL ayerPaintingPhase, const IntRect&) OVERRIDE;
236 239
237 virtual bool isTrackingRepaints() const OVERRIDE; 240 virtual bool isTrackingRepaints() const OVERRIDE;
238 241
239 // Whether the given RL needs to paint into its own separate backing (and he nce would need its own CompositedLayerMapping). 242 // Whether the given RL needs to paint into its own separate backing (and he nce would need its own CompositedLayerMapping).
240 bool needsOwnBacking(const RenderLayer*) const; 243 bool needsOwnBacking(const RenderLayer*) const;
241 // Whether the layer could ever be composited.
242 bool canBeComposited(const RenderLayer*) const;
243 244
244 void updateDirectCompositingReasons(RenderLayer*); 245 void updateDirectCompositingReasons(RenderLayer*);
245 246
246 void updateIfNeeded(); 247 void updateIfNeeded();
247 248
248 // Returns indirect reasons that a layer should be composited because of som ething in its subtree.
249 CompositingReasons subtreeReasonsForCompositing(RenderObject*, bool hasCompo sitedDescendants, bool has3DTransformedDescendants) const;
250
251 // Make or destroy the CompositedLayerMapping for this layer; returns true i f the compositedLayerMapping changed. 249 // Make or destroy the CompositedLayerMapping for this layer; returns true i f the compositedLayerMapping changed.
252 bool allocateOrClearCompositedLayerMapping(RenderLayer*, CompositingStateTra nsitionType compositedLayerUpdate); 250 bool allocateOrClearCompositedLayerMapping(RenderLayer*, CompositingStateTra nsitionType compositedLayerUpdate);
253 bool updateSquashingAssignment(RenderLayer*, SquashingState&, CompositingSta teTransitionType compositedLayerUpdate); 251 bool updateSquashingAssignment(RenderLayer*, SquashingState&, CompositingSta teTransitionType compositedLayerUpdate);
254 252
255 void recursiveRepaintLayer(RenderLayer*); 253 void recursiveRepaintLayer(RenderLayer*);
256 254
257 void computeCompositingRequirements(RenderLayer* ancestorLayer, RenderLayer* , OverlapMap&, struct CompositingRecursionData&, bool& descendantHas3DTransform, Vector<RenderLayer*>& unclippedDescendants, IntRect& absoluteDecendantBoundingB ox); 255 void computeCompositingRequirements(RenderLayer* ancestorLayer, RenderLayer* , OverlapMap&, struct CompositingRecursionData&, bool& descendantHas3DTransform, Vector<RenderLayer*>& unclippedDescendants, IntRect& absoluteDecendantBoundingB ox);
258 256
259 // Defines which RenderLayers will paint into which composited backings, by allocating and destroying CompositedLayerMappings as needed. 257 // Defines which RenderLayers will paint into which composited backings, by allocating and destroying CompositedLayerMappings as needed.
260 void assignLayersToBackings(RenderLayer*, bool& layersChanged); 258 void assignLayersToBackings(RenderLayer*, bool& layersChanged);
261 void assignLayersToBackingsInternal(RenderLayer*, SquashingState&, bool& lay ersChanged); 259 void assignLayersToBackingsInternal(RenderLayer*, SquashingState&, bool& lay ersChanged);
262 260
263 // Hook compositing layers together 261 // Hook compositing layers together
264 void setCompositingParent(RenderLayer* childLayer, RenderLayer* parentLayer) ; 262 void setCompositingParent(RenderLayer* childLayer, RenderLayer* parentLayer) ;
265 void removeCompositedChildren(RenderLayer*); 263 void removeCompositedChildren(RenderLayer*);
266 264
267 bool isRunningAcceleratedTransformAnimation(RenderObject*) const;
268
269 bool hasAnyAdditionalCompositedLayers(const RenderLayer* rootLayer) const; 265 bool hasAnyAdditionalCompositedLayers(const RenderLayer* rootLayer) const;
270 266
271 void ensureRootLayer(); 267 void ensureRootLayer();
272 void destroyRootLayer(); 268 void destroyRootLayer();
273 269
274 void attachRootLayer(RootLayerAttachment); 270 void attachRootLayer(RootLayerAttachment);
275 void detachRootLayer(); 271 void detachRootLayer();
276 272
277 bool isMainFrame() const; 273 bool isMainFrame() const;
278 274
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 334
339 // Layers for overflow controls 335 // Layers for overflow controls
340 OwnPtr<GraphicsLayer> m_layerForHorizontalScrollbar; 336 OwnPtr<GraphicsLayer> m_layerForHorizontalScrollbar;
341 OwnPtr<GraphicsLayer> m_layerForVerticalScrollbar; 337 OwnPtr<GraphicsLayer> m_layerForVerticalScrollbar;
342 OwnPtr<GraphicsLayer> m_layerForScrollCorner; 338 OwnPtr<GraphicsLayer> m_layerForScrollCorner;
343 #if USE(RUBBER_BANDING) 339 #if USE(RUBBER_BANDING)
344 OwnPtr<GraphicsLayer> m_layerForOverhangShadow; 340 OwnPtr<GraphicsLayer> m_layerForOverhangShadow;
345 #endif 341 #endif
346 }; 342 };
347 343
348
349 } // namespace WebCore 344 } // namespace WebCore
350 345
351 #endif // RenderLayerCompositor_h 346 #endif // RenderLayerCompositor_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698