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

Side by Side Diff: Source/core/layout/compositing/CompositingLayerAssigner.h

Issue 898783003: Move rendering/RenderLayer* to layout/ (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 10 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, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved.
3 * Copyright (C) 2014 Google Inc. All rights reserved. 3 * Copyright (C) 2014 Google Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the 11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution. 12 * documentation and/or other materials provided with the distribution.
13 * 13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 14 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */ 25 */
26 26
27 #ifndef CompositingLayerAssigner_h 27 #ifndef CompositingLayerAssigner_h
28 #define CompositingLayerAssigner_h 28 #define CompositingLayerAssigner_h
29 29
30 #include "core/layout/compositing/RenderLayerCompositor.h" 30 #include "core/layout/compositing/LayerCompositor.h"
31 #include "platform/geometry/IntRect.h" 31 #include "platform/geometry/IntRect.h"
32 #include "platform/geometry/LayoutPoint.h" 32 #include "platform/geometry/LayoutPoint.h"
33 33
34 namespace blink { 34 namespace blink {
35 35
36 class RenderLayer; 36 class Layer;
37 37
38 class CompositingLayerAssigner { 38 class CompositingLayerAssigner {
39 public: 39 public:
40 explicit CompositingLayerAssigner(RenderLayerCompositor*); 40 explicit CompositingLayerAssigner(LayerCompositor*);
41 ~CompositingLayerAssigner(); 41 ~CompositingLayerAssigner();
42 42
43 void assign(RenderLayer* updateRoot, Vector<RenderLayer*>& layersNeedingPain tInvalidation); 43 void assign(Layer* updateRoot, Vector<Layer*>& layersNeedingPaintInvalidatio n);
44 44
45 bool layersChanged() const { return m_layersChanged; } 45 bool layersChanged() const { return m_layersChanged; }
46 46
47 // FIXME: This function should be private. We should remove the one caller 47 // FIXME: This function should be private. We should remove the one caller
48 // once we've fixed the compositing chicken/egg issues. 48 // once we've fixed the compositing chicken/egg issues.
49 CompositingStateTransitionType computeCompositedLayerUpdate(RenderLayer*); 49 CompositingStateTransitionType computeCompositedLayerUpdate(Layer*);
50 50
51 private: 51 private:
52 struct SquashingState { 52 struct SquashingState {
53 SquashingState() 53 SquashingState()
54 : mostRecentMapping(0) 54 : mostRecentMapping(0)
55 , hasMostRecentMapping(false) 55 , hasMostRecentMapping(false)
56 , haveAssignedBackingsToEntireSquashingLayerSubtree(false) 56 , haveAssignedBackingsToEntireSquashingLayerSubtree(false)
57 , nextSquashedLayerIndex(0) 57 , nextSquashedLayerIndex(0)
58 , totalAreaOfSquashedRects(0) { } 58 , totalAreaOfSquashedRects(0) { }
59 59
60 void updateSquashingStateForNewMapping(CompositedLayerMapping*, bool has NewCompositedLayerMapping); 60 void updateSquashingStateForNewMapping(CompositedLayerMapping*, bool has NewCompositedLayerMapping);
61 61
62 // The most recent composited backing that the layer should squash onto if needed. 62 // The most recent composited backing that the layer should squash onto if needed.
63 CompositedLayerMapping* mostRecentMapping; 63 CompositedLayerMapping* mostRecentMapping;
64 bool hasMostRecentMapping; 64 bool hasMostRecentMapping;
65 65
66 // Whether all RenderLayers in the stacking subtree rooted at the most r ecent mapping's 66 // Whether all Layers in the stacking subtree rooted at the most recent mapping's
67 // owning layer have had CompositedLayerMappings assigned. Layers cannot squash into a 67 // owning layer have had CompositedLayerMappings assigned. Layers cannot squash into a
68 // CompositedLayerMapping owned by a stacking ancestor, since this chang es paint order. 68 // CompositedLayerMapping owned by a stacking ancestor, since this chang es paint order.
69 bool haveAssignedBackingsToEntireSquashingLayerSubtree; 69 bool haveAssignedBackingsToEntireSquashingLayerSubtree;
70 70
71 // Counter that tracks what index the next RenderLayer would be if it ge ts squashed to the current squashing layer. 71 // Counter that tracks what index the next Layer would be if it gets squ ashed to the current squashing layer.
72 size_t nextSquashedLayerIndex; 72 size_t nextSquashedLayerIndex;
73 73
74 // The absolute bounding rect of all the squashed layers. 74 // The absolute bounding rect of all the squashed layers.
75 IntRect boundingRect; 75 IntRect boundingRect;
76 76
77 // This is simply the sum of the areas of the squashed rects. This can b e very skewed if the rects overlap, 77 // This is simply the sum of the areas of the squashed rects. This can b e very skewed if the rects overlap,
78 // but should be close enough to drive a heuristic. 78 // but should be close enough to drive a heuristic.
79 uint64_t totalAreaOfSquashedRects; 79 uint64_t totalAreaOfSquashedRects;
80 }; 80 };
81 81
82 void assignLayersToBackingsInternal(RenderLayer*, SquashingState&, Vector<Re nderLayer*>& layersNeedingPaintInvalidation); 82 void assignLayersToBackingsInternal(Layer*, SquashingState&, Vector<Layer*>& layersNeedingPaintInvalidation);
83 void assignLayersToBackingsForReflectionLayer(RenderLayer* reflectionLayer, Vector<RenderLayer*>& layersNeedingPaintInvalidation); 83 void assignLayersToBackingsForReflectionLayer(Layer* reflectionLayer, Vector <Layer*>& layersNeedingPaintInvalidation);
84 CompositingReasons getReasonsPreventingSquashing(const RenderLayer*, const S quashingState&); 84 CompositingReasons getReasonsPreventingSquashing(const Layer*, const Squashi ngState&);
85 bool squashingWouldExceedSparsityTolerance(const RenderLayer* candidate, con st SquashingState&); 85 bool squashingWouldExceedSparsityTolerance(const Layer* candidate, const Squ ashingState&);
86 void updateSquashingAssignment(RenderLayer*, SquashingState&, CompositingSta teTransitionType, Vector<RenderLayer*>& layersNeedingPaintInvalidation); 86 void updateSquashingAssignment(Layer*, SquashingState&, CompositingStateTran sitionType, Vector<Layer*>& layersNeedingPaintInvalidation);
87 bool needsOwnBacking(const RenderLayer*) const; 87 bool needsOwnBacking(const Layer*) const;
88 88
89 RenderLayerCompositor* m_compositor; 89 LayerCompositor* m_compositor;
90 bool m_layersChanged; 90 bool m_layersChanged;
91 }; 91 };
92 92
93 } // namespace blink 93 } // namespace blink
94 94
95 #endif // CompositingLayerAssigner_h 95 #endif // CompositingLayerAssigner_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698