OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 | 6 |
7 #if USE(ACCELERATED_COMPOSITING) | 7 #if USE(ACCELERATED_COMPOSITING) |
8 | 8 |
9 #include "CCLayerImpl.h" | 9 #include "CCLayerImpl.h" |
10 | 10 |
11 #include "base/stringprintf.h" | 11 #include "base/stringprintf.h" |
12 #include "CCDebugBorderDrawQuad.h" | 12 #include "CCDebugBorderDrawQuad.h" |
13 #include "CCLayerSorter.h" | 13 #include "CCLayerSorter.h" |
14 #include "CCMathUtil.h" | 14 #include "CCMathUtil.h" |
15 #include "CCProxy.h" | 15 #include "CCProxy.h" |
16 #include "CCQuadSink.h" | 16 #include "CCQuadSink.h" |
17 #include "CCScrollbarAnimationController.h" | 17 #include "CCScrollbarAnimationController.h" |
18 #include "CCSettings.h" | 18 #include "CCSettings.h" |
19 #include "TraceEvent.h" | 19 #include "TraceEvent.h" |
| 20 #include "base/logging.h" |
20 | 21 |
21 using WebKit::WebTransformationMatrix; | 22 using WebKit::WebTransformationMatrix; |
22 | 23 |
23 namespace cc { | 24 namespace cc { |
24 | 25 |
25 CCLayerImpl::CCLayerImpl(int id) | 26 CCLayerImpl::CCLayerImpl(int id) |
26 : m_parent(0) | 27 : m_parent(0) |
27 , m_maskLayerId(-1) | 28 , m_maskLayerId(-1) |
28 , m_replicaLayerId(-1) | 29 , m_replicaLayerId(-1) |
29 , m_layerId(id) | 30 , m_layerId(id) |
(...skipping 19 matching lines...) Expand all Loading... |
49 , m_isContainerForFixedPositionLayers(false) | 50 , m_isContainerForFixedPositionLayers(false) |
50 , m_fixedToContainerLayer(false) | 51 , m_fixedToContainerLayer(false) |
51 , m_renderTarget(0) | 52 , m_renderTarget(0) |
52 , m_drawDepth(0) | 53 , m_drawDepth(0) |
53 , m_drawOpacity(0) | 54 , m_drawOpacity(0) |
54 , m_drawOpacityIsAnimating(false) | 55 , m_drawOpacityIsAnimating(false) |
55 , m_debugBorderColor(0) | 56 , m_debugBorderColor(0) |
56 , m_debugBorderWidth(0) | 57 , m_debugBorderWidth(0) |
57 , m_drawTransformIsAnimating(false) | 58 , m_drawTransformIsAnimating(false) |
58 , m_screenSpaceTransformIsAnimating(false) | 59 , m_screenSpaceTransformIsAnimating(false) |
59 #ifndef NDEBUG | |
60 , m_betweenWillDrawAndDidDraw(false) | 60 , m_betweenWillDrawAndDidDraw(false) |
61 #endif | |
62 , m_layerAnimationController(CCLayerAnimationController::create(this)) | 61 , m_layerAnimationController(CCLayerAnimationController::create(this)) |
63 { | 62 { |
64 ASSERT(CCProxy::isImplThread()); | 63 DCHECK(CCProxy::isImplThread()); |
65 ASSERT(m_layerId > 0); | 64 DCHECK(m_layerId > 0); |
66 } | 65 } |
67 | 66 |
68 CCLayerImpl::~CCLayerImpl() | 67 CCLayerImpl::~CCLayerImpl() |
69 { | 68 { |
70 ASSERT(CCProxy::isImplThread()); | 69 DCHECK(CCProxy::isImplThread()); |
71 #ifndef NDEBUG | 70 DCHECK(!m_betweenWillDrawAndDidDraw); |
72 ASSERT(!m_betweenWillDrawAndDidDraw); | |
73 #endif | |
74 } | 71 } |
75 | 72 |
76 void CCLayerImpl::addChild(PassOwnPtr<CCLayerImpl> child) | 73 void CCLayerImpl::addChild(PassOwnPtr<CCLayerImpl> child) |
77 { | 74 { |
78 child->setParent(this); | 75 child->setParent(this); |
79 m_children.append(child); | 76 m_children.append(child); |
80 } | 77 } |
81 | 78 |
82 void CCLayerImpl::removeFromParent() | 79 void CCLayerImpl::removeFromParent() |
83 { | 80 { |
(...skipping 17 matching lines...) Expand all Loading... |
101 m_children[0]->removeFromParent(); | 98 m_children[0]->removeFromParent(); |
102 } | 99 } |
103 | 100 |
104 void CCLayerImpl::clearChildList() | 101 void CCLayerImpl::clearChildList() |
105 { | 102 { |
106 m_children.clear(); | 103 m_children.clear(); |
107 } | 104 } |
108 | 105 |
109 void CCLayerImpl::createRenderSurface() | 106 void CCLayerImpl::createRenderSurface() |
110 { | 107 { |
111 ASSERT(!m_renderSurface); | 108 DCHECK(!m_renderSurface); |
112 m_renderSurface = adoptPtr(new CCRenderSurface(this)); | 109 m_renderSurface = adoptPtr(new CCRenderSurface(this)); |
113 setRenderTarget(this); | 110 setRenderTarget(this); |
114 } | 111 } |
115 | 112 |
116 bool CCLayerImpl::descendantDrawsContent() | 113 bool CCLayerImpl::descendantDrawsContent() |
117 { | 114 { |
118 for (size_t i = 0; i < m_children.size(); ++i) { | 115 for (size_t i = 0; i < m_children.size(); ++i) { |
119 if (m_children[i]->drawsContent() || m_children[i]->descendantDrawsConte
nt()) | 116 if (m_children[i]->drawsContent() || m_children[i]->descendantDrawsConte
nt()) |
120 return true; | 117 return true; |
121 } | 118 } |
122 return false; | 119 return false; |
123 } | 120 } |
124 | 121 |
125 scoped_ptr<CCSharedQuadState> CCLayerImpl::createSharedQuadState() const | 122 scoped_ptr<CCSharedQuadState> CCLayerImpl::createSharedQuadState() const |
126 { | 123 { |
127 return CCSharedQuadState::create(m_drawTransform, m_visibleContentRect, m_dr
awableContentRect, m_drawOpacity, m_contentsOpaque); | 124 return CCSharedQuadState::create(m_drawTransform, m_visibleContentRect, m_dr
awableContentRect, m_drawOpacity, m_contentsOpaque); |
128 } | 125 } |
129 | 126 |
130 void CCLayerImpl::willDraw(CCResourceProvider*) | 127 void CCLayerImpl::willDraw(CCResourceProvider*) |
131 { | 128 { |
132 #ifndef NDEBUG | |
133 // willDraw/didDraw must be matched. | 129 // willDraw/didDraw must be matched. |
134 ASSERT(!m_betweenWillDrawAndDidDraw); | 130 DCHECK(!m_betweenWillDrawAndDidDraw); |
135 m_betweenWillDrawAndDidDraw = true; | 131 m_betweenWillDrawAndDidDraw = true; |
136 #endif | |
137 } | 132 } |
138 | 133 |
139 void CCLayerImpl::didDraw(CCResourceProvider*) | 134 void CCLayerImpl::didDraw(CCResourceProvider*) |
140 { | 135 { |
141 #ifndef NDEBUG | 136 DCHECK(m_betweenWillDrawAndDidDraw); |
142 ASSERT(m_betweenWillDrawAndDidDraw); | |
143 m_betweenWillDrawAndDidDraw = false; | 137 m_betweenWillDrawAndDidDraw = false; |
144 #endif | |
145 } | 138 } |
146 | 139 |
147 void CCLayerImpl::appendDebugBorderQuad(CCQuadSink& quadList, const CCSharedQuad
State* sharedQuadState, CCAppendQuadsData& appendQuadsData) const | 140 void CCLayerImpl::appendDebugBorderQuad(CCQuadSink& quadList, const CCSharedQuad
State* sharedQuadState, CCAppendQuadsData& appendQuadsData) const |
148 { | 141 { |
149 if (!hasDebugBorders()) | 142 if (!hasDebugBorders()) |
150 return; | 143 return; |
151 | 144 |
152 IntRect contentRect(IntPoint(), contentBounds()); | 145 IntRect contentRect(IntPoint(), contentBounds()); |
153 quadList.append(CCDebugBorderDrawQuad::create(sharedQuadState, contentRect,
debugBorderColor(), debugBorderWidth()).PassAs<CCDrawQuad>(), appendQuadsData); | 146 quadList.append(CCDebugBorderDrawQuad::create(sharedQuadState, contentRect,
debugBorderColor(), debugBorderWidth()).PassAs<CCDrawQuad>(), appendQuadsData); |
154 } | 147 } |
155 | 148 |
156 bool CCLayerImpl::hasContributingDelegatedRenderPasses() const | 149 bool CCLayerImpl::hasContributingDelegatedRenderPasses() const |
157 { | 150 { |
158 return false; | 151 return false; |
159 } | 152 } |
160 | 153 |
161 CCRenderPass::Id CCLayerImpl::firstContributingRenderPassId() const | 154 CCRenderPass::Id CCLayerImpl::firstContributingRenderPassId() const |
162 { | 155 { |
163 return CCRenderPass::Id(0, 0); | 156 return CCRenderPass::Id(0, 0); |
164 } | 157 } |
165 | 158 |
166 CCRenderPass::Id CCLayerImpl::nextContributingRenderPassId(CCRenderPass::Id) con
st | 159 CCRenderPass::Id CCLayerImpl::nextContributingRenderPassId(CCRenderPass::Id) con
st |
167 { | 160 { |
168 return CCRenderPass::Id(0, 0); | 161 return CCRenderPass::Id(0, 0); |
169 } | 162 } |
170 | 163 |
171 CCResourceProvider::ResourceId CCLayerImpl::contentsResourceId() const | 164 CCResourceProvider::ResourceId CCLayerImpl::contentsResourceId() const |
172 { | 165 { |
173 ASSERT_NOT_REACHED(); | 166 NOTREACHED(); |
174 return 0; | 167 return 0; |
175 } | 168 } |
176 | 169 |
177 FloatSize CCLayerImpl::scrollBy(const FloatSize& scroll) | 170 FloatSize CCLayerImpl::scrollBy(const FloatSize& scroll) |
178 { | 171 { |
179 IntSize minDelta = -toSize(m_scrollPosition); | 172 IntSize minDelta = -toSize(m_scrollPosition); |
180 IntSize maxDelta = m_maxScrollPosition - toSize(m_scrollPosition); | 173 IntSize maxDelta = m_maxScrollPosition - toSize(m_scrollPosition); |
181 // Clamp newDelta so that position + delta stays within scroll bounds. | 174 // Clamp newDelta so that position + delta stays within scroll bounds. |
182 FloatSize newDelta = (m_scrollDelta + scroll).expandedTo(minDelta).shrunkTo(
maxDelta); | 175 FloatSize newDelta = (m_scrollDelta + scroll).expandedTo(minDelta).shrunkTo(
maxDelta); |
183 FloatSize unscrolled = m_scrollDelta + scroll - newDelta; | 176 FloatSize unscrolled = m_scrollDelta + scroll - newDelta; |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
676 if (!m_scrollbarAnimationController) | 669 if (!m_scrollbarAnimationController) |
677 m_scrollbarAnimationController = CCScrollbarAnimationController::create(
this); | 670 m_scrollbarAnimationController = CCScrollbarAnimationController::create(
this); |
678 m_scrollbarAnimationController->setVerticalScrollbarLayer(scrollbarLayer); | 671 m_scrollbarAnimationController->setVerticalScrollbarLayer(scrollbarLayer); |
679 m_scrollbarAnimationController->updateScrollOffset(this); | 672 m_scrollbarAnimationController->updateScrollOffset(this); |
680 } | 673 } |
681 | 674 |
682 } | 675 } |
683 | 676 |
684 | 677 |
685 #endif // USE(ACCELERATED_COMPOSITING) | 678 #endif // USE(ACCELERATED_COMPOSITING) |
OLD | NEW |