OLD | NEW |
---|---|
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 |
(...skipping 10 matching lines...) Expand all Loading... | |
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 #include "config.h" | 27 #include "config.h" |
28 #include "core/rendering/compositing/GraphicsLayerUpdater.h" | 28 #include "core/rendering/compositing/GraphicsLayerUpdater.h" |
29 | 29 |
30 #include "core/html/HTMLMediaElement.h" | 30 #include "core/html/HTMLMediaElement.h" |
31 #include "core/inspector/InspectorTraceEvents.h" | |
31 #include "core/rendering/RenderLayer.h" | 32 #include "core/rendering/RenderLayer.h" |
32 #include "core/rendering/RenderLayerReflectionInfo.h" | 33 #include "core/rendering/RenderLayerReflectionInfo.h" |
33 #include "core/rendering/RenderPart.h" | 34 #include "core/rendering/RenderPart.h" |
34 #include "core/rendering/compositing/CompositedLayerMapping.h" | 35 #include "core/rendering/compositing/CompositedLayerMapping.h" |
35 #include "core/rendering/compositing/RenderLayerCompositor.h" | 36 #include "core/rendering/compositing/RenderLayerCompositor.h" |
36 #include "platform/TraceEvent.h" | 37 #include "platform/TraceEvent.h" |
37 | 38 |
38 namespace blink { | 39 namespace blink { |
39 | 40 |
40 class GraphicsLayerUpdater::UpdateContext { | 41 class GraphicsLayerUpdater::UpdateContext { |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
74 | 75 |
75 GraphicsLayerUpdater::GraphicsLayerUpdater() | 76 GraphicsLayerUpdater::GraphicsLayerUpdater() |
76 : m_needsRebuildTree(false) | 77 : m_needsRebuildTree(false) |
77 { | 78 { |
78 } | 79 } |
79 | 80 |
80 GraphicsLayerUpdater::~GraphicsLayerUpdater() | 81 GraphicsLayerUpdater::~GraphicsLayerUpdater() |
81 { | 82 { |
82 } | 83 } |
83 | 84 |
84 void GraphicsLayerUpdater::update(RenderLayer& layer, Vector<RenderLayer*>& laye rsNeedingPaintInvalidation) | 85 void GraphicsLayerUpdater::update(RenderLayer& layer, LayersNeedingPaintInvalida tion& layersNeedingPaintInvalidation) |
85 { | 86 { |
86 TRACE_EVENT0("blink", "GraphicsLayerUpdater::update"); | 87 TRACE_EVENT0("blink", "GraphicsLayerUpdater::update"); |
87 updateRecursive(layer, DoNotForceUpdate, UpdateContext(), layersNeedingPaint Invalidation); | 88 updateRecursive(layer, DoNotForceUpdate, UpdateContext(), layersNeedingPaint Invalidation); |
88 layer.compositor()->updateRootLayerPosition(); | 89 layer.compositor()->updateRootLayerPosition(); |
89 } | 90 } |
90 | 91 |
91 void GraphicsLayerUpdater::updateRecursive(RenderLayer& layer, UpdateType update Type, const UpdateContext& context, Vector<RenderLayer*>& layersNeedingPaintInva lidation) | 92 void GraphicsLayerUpdater::updateRecursive(RenderLayer& layer, UpdateType update Type, const UpdateContext& context, LayersNeedingPaintInvalidation& layersNeedin gPaintInvalidation) |
92 { | 93 { |
93 if (layer.hasCompositedLayerMapping()) { | 94 if (layer.hasCompositedLayerMapping()) { |
94 CompositedLayerMapping* mapping = layer.compositedLayerMapping(); | 95 CompositedLayerMapping* mapping = layer.compositedLayerMapping(); |
95 | 96 |
96 if (updateType == ForceUpdate || mapping->needsGraphicsLayerUpdate()) { | 97 if (updateType == ForceUpdate || mapping->needsGraphicsLayerUpdate()) { |
97 const RenderLayer* compositingContainer = context.compositingContain er(layer); | 98 const RenderLayer* compositingContainer = context.compositingContain er(layer); |
98 ASSERT(compositingContainer == layer.enclosingLayerWithCompositedLay erMapping(ExcludeSelf)); | 99 ASSERT(compositingContainer == layer.enclosingLayerWithCompositedLay erMapping(ExcludeSelf)); |
99 | 100 |
100 if (mapping->updateRequiresOwnBackingStoreForAncestorReasons(composi tingContainer)) { | 101 if (mapping->updateRequiresOwnBackingStoreForAncestorReasons(composi tingContainer)) { |
101 layersNeedingPaintInvalidation.append(&layer); | 102 layersNeedingPaintInvalidation.append(std::make_pair(&layer, Ins pectorLayerInvalidationTrackingEvent::AncestorRequiresNewLayer)); |
pdr.
2014/09/12 04:07:17
Why do we need to track the {layer,reason} pair to
kouhei (in TOK)
2014/09/12 05:02:12
The string is put into vector to avoid code duplic
| |
102 updateType = ForceUpdate; | 103 updateType = ForceUpdate; |
103 } | 104 } |
104 | 105 |
105 if (mapping->updateGraphicsLayerConfiguration()) | 106 if (mapping->updateGraphicsLayerConfiguration()) |
106 m_needsRebuildTree = true; | 107 m_needsRebuildTree = true; |
107 | 108 |
108 mapping->updateGraphicsLayerGeometry(compositingContainer, context.c ompositingStackingContext(), layersNeedingPaintInvalidation); | 109 mapping->updateGraphicsLayerGeometry(compositingContainer, context.c ompositingStackingContext(), layersNeedingPaintInvalidation); |
109 | 110 |
110 if (mapping->hasUnpositionedOverflowControlsLayers()) | 111 if (mapping->hasUnpositionedOverflowControlsLayers()) |
111 layer.scrollableArea()->positionOverflowControls(IntSize()); | 112 layer.scrollableArea()->positionOverflowControls(IntSize()); |
(...skipping 15 matching lines...) Expand all Loading... | |
127 if (layer.hasCompositedLayerMapping()) | 128 if (layer.hasCompositedLayerMapping()) |
128 layer.compositedLayerMapping()->assertNeedsToUpdateGraphicsLayerBitsClea red(); | 129 layer.compositedLayerMapping()->assertNeedsToUpdateGraphicsLayerBitsClea red(); |
129 | 130 |
130 for (RenderLayer* child = layer.firstChild(); child; child = child->nextSibl ing()) | 131 for (RenderLayer* child = layer.firstChild(); child; child = child->nextSibl ing()) |
131 assertNeedsToUpdateGraphicsLayerBitsCleared(*child); | 132 assertNeedsToUpdateGraphicsLayerBitsCleared(*child); |
132 } | 133 } |
133 | 134 |
134 #endif | 135 #endif |
135 | 136 |
136 } // namespace blink | 137 } // namespace blink |
OLD | NEW |