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

Side by Side Diff: cc/layer_tree_host.cc

Issue 11192030: cc: Switch to Chromium DCHECKs LOGs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebaseonenne Created 8 years, 2 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
« no previous file with comments | « cc/layer_tiling_data.cc ('k') | cc/layer_tree_host_common.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "CCLayerTreeHost.h" 7 #include "CCLayerTreeHost.h"
8 8
9 #include "CCFontAtlas.h" 9 #include "CCFontAtlas.h"
10 #include "CCGraphicsContext.h" 10 #include "CCGraphicsContext.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 , m_deviceScaleFactor(1) 104 , m_deviceScaleFactor(1)
105 , m_visible(true) 105 , m_visible(true)
106 , m_pageScaleFactor(1) 106 , m_pageScaleFactor(1)
107 , m_minPageScaleFactor(1) 107 , m_minPageScaleFactor(1)
108 , m_maxPageScaleFactor(1) 108 , m_maxPageScaleFactor(1)
109 , m_triggerIdleUpdates(true) 109 , m_triggerIdleUpdates(true)
110 , m_backgroundColor(SK_ColorWHITE) 110 , m_backgroundColor(SK_ColorWHITE)
111 , m_hasTransparentBackground(false) 111 , m_hasTransparentBackground(false)
112 , m_partialTextureUpdateRequests(0) 112 , m_partialTextureUpdateRequests(0)
113 { 113 {
114 ASSERT(CCProxy::isMainThread()); 114 DCHECK(CCProxy::isMainThread());
115 numLayerTreeInstances++; 115 numLayerTreeInstances++;
116 } 116 }
117 117
118 bool CCLayerTreeHost::initialize() 118 bool CCLayerTreeHost::initialize()
119 { 119 {
120 TRACE_EVENT0("cc", "CCLayerTreeHost::initialize"); 120 TRACE_EVENT0("cc", "CCLayerTreeHost::initialize");
121 121
122 if (CCProxy::hasImplThread()) 122 if (CCProxy::hasImplThread())
123 m_proxy = CCThreadProxy::create(this); 123 m_proxy = CCThreadProxy::create(this);
124 else 124 else
125 m_proxy = CCSingleThreadProxy::create(this); 125 m_proxy = CCSingleThreadProxy::create(this);
126 m_proxy->start(); 126 m_proxy->start();
127 127
128 return m_proxy->initializeContext(); 128 return m_proxy->initializeContext();
129 } 129 }
130 130
131 CCLayerTreeHost::~CCLayerTreeHost() 131 CCLayerTreeHost::~CCLayerTreeHost()
132 { 132 {
133 if (m_rootLayer) 133 if (m_rootLayer)
134 m_rootLayer->setLayerTreeHost(0); 134 m_rootLayer->setLayerTreeHost(0);
135 ASSERT(CCProxy::isMainThread()); 135 DCHECK(CCProxy::isMainThread());
136 TRACE_EVENT0("cc", "CCLayerTreeHost::~CCLayerTreeHost"); 136 TRACE_EVENT0("cc", "CCLayerTreeHost::~CCLayerTreeHost");
137 ASSERT(m_proxy.get()); 137 DCHECK(m_proxy.get());
138 m_proxy->stop(); 138 m_proxy->stop();
139 m_proxy.reset(); 139 m_proxy.reset();
140 numLayerTreeInstances--; 140 numLayerTreeInstances--;
141 RateLimiterMap::iterator it = m_rateLimiters.begin(); 141 RateLimiterMap::iterator it = m_rateLimiters.begin();
142 if (it != m_rateLimiters.end()) 142 if (it != m_rateLimiters.end())
143 it->second->stop(); 143 it->second->stop();
144 } 144 }
145 145
146 void CCLayerTreeHost::setSurfaceReady() 146 void CCLayerTreeHost::setSurfaceReady()
147 { 147 {
(...skipping 22 matching lines...) Expand all
170 170
171 m_settings.defaultTileSize = IntSize(min(m_settings.defaultTileSize.width(), m_proxy->rendererCapabilities().maxTextureSize), 171 m_settings.defaultTileSize = IntSize(min(m_settings.defaultTileSize.width(), m_proxy->rendererCapabilities().maxTextureSize),
172 min(m_settings.defaultTileSize.height() , m_proxy->rendererCapabilities().maxTextureSize)); 172 min(m_settings.defaultTileSize.height() , m_proxy->rendererCapabilities().maxTextureSize));
173 m_settings.maxUntiledLayerSize = IntSize(min(m_settings.maxUntiledLayerSize. width(), m_proxy->rendererCapabilities().maxTextureSize), 173 m_settings.maxUntiledLayerSize = IntSize(min(m_settings.maxUntiledLayerSize. width(), m_proxy->rendererCapabilities().maxTextureSize),
174 min(m_settings.maxUntiledLayerSize. height(), m_proxy->rendererCapabilities().maxTextureSize)); 174 min(m_settings.maxUntiledLayerSize. height(), m_proxy->rendererCapabilities().maxTextureSize));
175 } 175 }
176 176
177 CCLayerTreeHost::RecreateResult CCLayerTreeHost::recreateContext() 177 CCLayerTreeHost::RecreateResult CCLayerTreeHost::recreateContext()
178 { 178 {
179 TRACE_EVENT0("cc", "CCLayerTreeHost::recreateContext"); 179 TRACE_EVENT0("cc", "CCLayerTreeHost::recreateContext");
180 ASSERT(m_contextLost); 180 DCHECK(m_contextLost);
181 181
182 bool recreated = false; 182 bool recreated = false;
183 if (!m_numTimesRecreateShouldFail) 183 if (!m_numTimesRecreateShouldFail)
184 recreated = m_proxy->recreateContext(); 184 recreated = m_proxy->recreateContext();
185 else 185 else
186 m_numTimesRecreateShouldFail--; 186 m_numTimesRecreateShouldFail--;
187 187
188 if (recreated) { 188 if (recreated) {
189 m_client->didRecreateOutputSurface(true); 189 m_client->didRecreateOutputSurface(true);
190 m_contextLost = false; 190 m_contextLost = false;
(...skipping 13 matching lines...) Expand all
204 } 204 }
205 205
206 // We have tried too many times to recreate the context. Tell the host to fa ll 206 // We have tried too many times to recreate the context. Tell the host to fa ll
207 // back to software rendering. 207 // back to software rendering.
208 m_client->didRecreateOutputSurface(false); 208 m_client->didRecreateOutputSurface(false);
209 return RecreateFailedAndGaveUp; 209 return RecreateFailedAndGaveUp;
210 } 210 }
211 211
212 void CCLayerTreeHost::deleteContentsTexturesOnImplThread(CCResourceProvider* res ourceProvider) 212 void CCLayerTreeHost::deleteContentsTexturesOnImplThread(CCResourceProvider* res ourceProvider)
213 { 213 {
214 ASSERT(CCProxy::isImplThread()); 214 DCHECK(CCProxy::isImplThread());
215 if (m_rendererInitialized) 215 if (m_rendererInitialized)
216 m_contentsTextureManager->clearAllMemory(resourceProvider); 216 m_contentsTextureManager->clearAllMemory(resourceProvider);
217 } 217 }
218 218
219 void CCLayerTreeHost::acquireLayerTextures() 219 void CCLayerTreeHost::acquireLayerTextures()
220 { 220 {
221 ASSERT(CCProxy::isMainThread()); 221 DCHECK(CCProxy::isMainThread());
222 m_proxy->acquireLayerTextures(); 222 m_proxy->acquireLayerTextures();
223 } 223 }
224 224
225 void CCLayerTreeHost::updateAnimations(double monotonicFrameBeginTime) 225 void CCLayerTreeHost::updateAnimations(double monotonicFrameBeginTime)
226 { 226 {
227 m_animating = true; 227 m_animating = true;
228 m_client->animate(monotonicFrameBeginTime); 228 m_client->animate(monotonicFrameBeginTime);
229 animateLayers(monotonicFrameBeginTime); 229 animateLayers(monotonicFrameBeginTime);
230 m_animating = false; 230 m_animating = false;
231 231
232 m_renderingStats.numAnimationFrames++; 232 m_renderingStats.numAnimationFrames++;
233 } 233 }
234 234
235 void CCLayerTreeHost::layout() 235 void CCLayerTreeHost::layout()
236 { 236 {
237 m_client->layout(); 237 m_client->layout();
238 } 238 }
239 239
240 void CCLayerTreeHost::beginCommitOnImplThread(CCLayerTreeHostImpl* hostImpl) 240 void CCLayerTreeHost::beginCommitOnImplThread(CCLayerTreeHostImpl* hostImpl)
241 { 241 {
242 ASSERT(CCProxy::isImplThread()); 242 DCHECK(CCProxy::isImplThread());
243 TRACE_EVENT0("cc", "CCLayerTreeHost::commitTo"); 243 TRACE_EVENT0("cc", "CCLayerTreeHost::commitTo");
244 } 244 }
245 245
246 // This function commits the CCLayerTreeHost to an impl tree. When modifying 246 // This function commits the CCLayerTreeHost to an impl tree. When modifying
247 // this function, keep in mind that the function *runs* on the impl thread! Any 247 // this function, keep in mind that the function *runs* on the impl thread! Any
248 // code that is logically a main thread operation, e.g. deletion of a LayerChrom ium, 248 // code that is logically a main thread operation, e.g. deletion of a LayerChrom ium,
249 // should be delayed until the CCLayerTreeHost::commitComplete, which will run 249 // should be delayed until the CCLayerTreeHost::commitComplete, which will run
250 // after the commit, but on the main thread. 250 // after the commit, but on the main thread.
251 void CCLayerTreeHost::finishCommitOnImplThread(CCLayerTreeHostImpl* hostImpl) 251 void CCLayerTreeHost::finishCommitOnImplThread(CCLayerTreeHostImpl* hostImpl)
252 { 252 {
253 ASSERT(CCProxy::isImplThread()); 253 DCHECK(CCProxy::isImplThread());
254 254
255 m_contentsTextureManager->updateBackingsInDrawingImplTree(); 255 m_contentsTextureManager->updateBackingsInDrawingImplTree();
256 m_contentsTextureManager->reduceMemory(hostImpl->resourceProvider()); 256 m_contentsTextureManager->reduceMemory(hostImpl->resourceProvider());
257 257
258 hostImpl->setRootLayer(TreeSynchronizer::synchronizeTrees(rootLayer(), hostI mpl->detachLayerTree(), hostImpl)); 258 hostImpl->setRootLayer(TreeSynchronizer::synchronizeTrees(rootLayer(), hostI mpl->detachLayerTree(), hostImpl));
259 259
260 if (m_rootLayer && m_hudLayer) 260 if (m_rootLayer && m_hudLayer)
261 hostImpl->setHudLayer(static_cast<CCHeadsUpDisplayLayerImpl*>(CCLayerTre eHostCommon::findLayerInSubtree(hostImpl->rootLayer(), m_hudLayer->id()))); 261 hostImpl->setHudLayer(static_cast<CCHeadsUpDisplayLayerImpl*>(CCLayerTre eHostCommon::findLayerInSubtree(hostImpl->rootLayer(), m_hudLayer->id())));
262 else 262 else
263 hostImpl->setHudLayer(0); 263 hostImpl->setHudLayer(0);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 } 315 }
316 316
317 scoped_ptr<CCLayerTreeHostImpl> CCLayerTreeHost::createLayerTreeHostImpl(CCLayer TreeHostImplClient* client) 317 scoped_ptr<CCLayerTreeHostImpl> CCLayerTreeHost::createLayerTreeHostImpl(CCLayer TreeHostImplClient* client)
318 { 318 {
319 return CCLayerTreeHostImpl::create(m_settings, client); 319 return CCLayerTreeHostImpl::create(m_settings, client);
320 } 320 }
321 321
322 void CCLayerTreeHost::didLoseContext() 322 void CCLayerTreeHost::didLoseContext()
323 { 323 {
324 TRACE_EVENT0("cc", "CCLayerTreeHost::didLoseContext"); 324 TRACE_EVENT0("cc", "CCLayerTreeHost::didLoseContext");
325 ASSERT(CCProxy::isMainThread()); 325 DCHECK(CCProxy::isMainThread());
326 m_contextLost = true; 326 m_contextLost = true;
327 m_numFailedRecreateAttempts = 0; 327 m_numFailedRecreateAttempts = 0;
328 setNeedsCommit(); 328 setNeedsCommit();
329 } 329 }
330 330
331 bool CCLayerTreeHost::compositeAndReadback(void *pixels, const IntRect& rect) 331 bool CCLayerTreeHost::compositeAndReadback(void *pixels, const IntRect& rect)
332 { 332 {
333 m_triggerIdleUpdates = false; 333 m_triggerIdleUpdates = false;
334 bool ret = m_proxy->compositeAndReadback(pixels, rect); 334 bool ret = m_proxy->compositeAndReadback(pixels, rect);
335 m_triggerIdleUpdates = true; 335 m_triggerIdleUpdates = true;
(...skipping 13 matching lines...) Expand all
349 m_proxy->renderingStats(stats); 349 m_proxy->renderingStats(stats);
350 } 350 }
351 351
352 const RendererCapabilities& CCLayerTreeHost::rendererCapabilities() const 352 const RendererCapabilities& CCLayerTreeHost::rendererCapabilities() const
353 { 353 {
354 return m_proxy->rendererCapabilities(); 354 return m_proxy->rendererCapabilities();
355 } 355 }
356 356
357 void CCLayerTreeHost::setNeedsAnimate() 357 void CCLayerTreeHost::setNeedsAnimate()
358 { 358 {
359 ASSERT(CCProxy::hasImplThread()); 359 DCHECK(CCProxy::hasImplThread());
360 m_proxy->setNeedsAnimate(); 360 m_proxy->setNeedsAnimate();
361 } 361 }
362 362
363 void CCLayerTreeHost::setNeedsCommit() 363 void CCLayerTreeHost::setNeedsCommit()
364 { 364 {
365 m_proxy->setNeedsCommit(); 365 m_proxy->setNeedsCommit();
366 } 366 }
367 367
368 void CCLayerTreeHost::setNeedsRedraw() 368 void CCLayerTreeHost::setNeedsRedraw()
369 { 369 {
370 m_proxy->setNeedsRedraw(); 370 m_proxy->setNeedsRedraw();
371 if (!CCThreadProxy::implThread()) 371 if (!CCThreadProxy::implThread())
372 m_client->scheduleComposite(); 372 m_client->scheduleComposite();
373 } 373 }
374 374
375 bool CCLayerTreeHost::commitRequested() const 375 bool CCLayerTreeHost::commitRequested() const
376 { 376 {
377 return m_proxy->commitRequested(); 377 return m_proxy->commitRequested();
378 } 378 }
379 379
380 void CCLayerTreeHost::setAnimationEvents(scoped_ptr<CCAnimationEventsVector> eve nts, double wallClockTime) 380 void CCLayerTreeHost::setAnimationEvents(scoped_ptr<CCAnimationEventsVector> eve nts, double wallClockTime)
381 { 381 {
382 ASSERT(CCThreadProxy::isMainThread()); 382 DCHECK(CCThreadProxy::isMainThread());
383 setAnimationEventsRecursive(*events.get(), m_rootLayer.get(), wallClockTime) ; 383 setAnimationEventsRecursive(*events.get(), m_rootLayer.get(), wallClockTime) ;
384 } 384 }
385 385
386 void CCLayerTreeHost::didAddAnimation() 386 void CCLayerTreeHost::didAddAnimation()
387 { 387 {
388 m_needsAnimateLayers = true; 388 m_needsAnimateLayers = true;
389 m_proxy->didAddAnimation(); 389 m_proxy->didAddAnimation();
390 } 390 }
391 391
392 void CCLayerTreeHost::setRootLayer(scoped_refptr<LayerChromium> rootLayer) 392 void CCLayerTreeHost::setRootLayer(scoped_refptr<LayerChromium> rootLayer)
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 m_proxy->loseContext(); 448 m_proxy->loseContext();
449 } 449 }
450 450
451 CCPrioritizedTextureManager* CCLayerTreeHost::contentsTextureManager() const 451 CCPrioritizedTextureManager* CCLayerTreeHost::contentsTextureManager() const
452 { 452 {
453 return m_contentsTextureManager.get(); 453 return m_contentsTextureManager.get();
454 } 454 }
455 455
456 void CCLayerTreeHost::composite() 456 void CCLayerTreeHost::composite()
457 { 457 {
458 ASSERT(!CCThreadProxy::implThread()); 458 DCHECK(!CCThreadProxy::implThread());
459 static_cast<CCSingleThreadProxy*>(m_proxy.get())->compositeImmediately(); 459 static_cast<CCSingleThreadProxy*>(m_proxy.get())->compositeImmediately();
460 } 460 }
461 461
462 void CCLayerTreeHost::scheduleComposite() 462 void CCLayerTreeHost::scheduleComposite()
463 { 463 {
464 m_client->scheduleComposite(); 464 m_client->scheduleComposite();
465 } 465 }
466 466
467 bool CCLayerTreeHost::initializeRendererIfNeeded() 467 bool CCLayerTreeHost::initializeRendererIfNeeded()
468 { 468 {
469 if (!m_rendererInitialized) { 469 if (!m_rendererInitialized) {
470 initializeRenderer(); 470 initializeRenderer();
471 // If we couldn't initialize, then bail since we're returning to softwar e mode. 471 // If we couldn't initialize, then bail since we're returning to softwar e mode.
472 if (!m_rendererInitialized) 472 if (!m_rendererInitialized)
473 return false; 473 return false;
474 } 474 }
475 if (m_contextLost) { 475 if (m_contextLost) {
476 if (recreateContext() != RecreateSucceeded) 476 if (recreateContext() != RecreateSucceeded)
477 return false; 477 return false;
478 } 478 }
479 return true; 479 return true;
480 } 480 }
481 481
482 void CCLayerTreeHost::updateLayers(CCTextureUpdateQueue& queue, size_t memoryAll ocationLimitBytes) 482 void CCLayerTreeHost::updateLayers(CCTextureUpdateQueue& queue, size_t memoryAll ocationLimitBytes)
483 { 483 {
484 ASSERT(m_rendererInitialized); 484 DCHECK(m_rendererInitialized);
485 ASSERT(memoryAllocationLimitBytes); 485 DCHECK(memoryAllocationLimitBytes);
486 486
487 if (!rootLayer()) 487 if (!rootLayer())
488 return; 488 return;
489 489
490 if (layoutViewportSize().isEmpty()) 490 if (layoutViewportSize().isEmpty())
491 return; 491 return;
492 492
493 m_contentsTextureManager->setMaxMemoryLimitBytes(memoryAllocationLimitBytes) ; 493 m_contentsTextureManager->setMaxMemoryLimitBytes(memoryAllocationLimitBytes) ;
494 494
495 updateLayers(rootLayer(), queue); 495 updateLayers(rootLayer(), queue);
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 CCOcclusionTracker occlusionTracker(m_rootLayer->renderSurface()->contentRec t(), recordMetricsForFrame); 666 CCOcclusionTracker occlusionTracker(m_rootLayer->renderSurface()->contentRec t(), recordMetricsForFrame);
667 occlusionTracker.setMinimumTrackingSize(m_settings.minimumOcclusionTrackingS ize); 667 occlusionTracker.setMinimumTrackingSize(m_settings.minimumOcclusionTrackingS ize);
668 668
669 prioritizeTextures(renderSurfaceLayerList, occlusionTracker.overdrawMetrics( )); 669 prioritizeTextures(renderSurfaceLayerList, occlusionTracker.overdrawMetrics( ));
670 670
671 CCLayerIteratorType end = CCLayerIteratorType::end(&renderSurfaceLayerList); 671 CCLayerIteratorType end = CCLayerIteratorType::end(&renderSurfaceLayerList);
672 for (CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayer List); it != end; ++it) { 672 for (CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayer List); it != end; ++it) {
673 occlusionTracker.enterLayer(it); 673 occlusionTracker.enterLayer(it);
674 674
675 if (it.representsTargetRenderSurface()) { 675 if (it.representsTargetRenderSurface()) {
676 ASSERT(it->renderSurface()->drawOpacity() || it->renderSurface()->dr awOpacityIsAnimating()); 676 DCHECK(it->renderSurface()->drawOpacity() || it->renderSurface()->dr awOpacityIsAnimating());
677 needMoreUpdates |= paintMasksForRenderSurface(*it, queue); 677 needMoreUpdates |= paintMasksForRenderSurface(*it, queue);
678 } else if (it.representsItself()) { 678 } else if (it.representsItself()) {
679 ASSERT(!it->bounds().isEmpty()); 679 DCHECK(!it->bounds().isEmpty());
680 it->update(queue, &occlusionTracker, m_renderingStats); 680 it->update(queue, &occlusionTracker, m_renderingStats);
681 needMoreUpdates |= it->needMoreUpdates(); 681 needMoreUpdates |= it->needMoreUpdates();
682 } 682 }
683 683
684 occlusionTracker.leaveLayer(it); 684 occlusionTracker.leaveLayer(it);
685 } 685 }
686 686
687 occlusionTracker.overdrawMetrics().recordMetrics(this); 687 occlusionTracker.overdrawMetrics().recordMetrics(this);
688 688
689 return needMoreUpdates; 689 return needMoreUpdates;
(...skipping 23 matching lines...) Expand all
713 void CCLayerTreeHost::setImplTransform(const WebKit::WebTransformationMatrix& tr ansform) 713 void CCLayerTreeHost::setImplTransform(const WebKit::WebTransformationMatrix& tr ansform)
714 { 714 {
715 m_implTransform = transform; 715 m_implTransform = transform;
716 } 716 }
717 717
718 void CCLayerTreeHost::startRateLimiter(WebKit::WebGraphicsContext3D* context) 718 void CCLayerTreeHost::startRateLimiter(WebKit::WebGraphicsContext3D* context)
719 { 719 {
720 if (m_animating) 720 if (m_animating)
721 return; 721 return;
722 722
723 ASSERT(context); 723 DCHECK(context);
724 RateLimiterMap::iterator it = m_rateLimiters.find(context); 724 RateLimiterMap::iterator it = m_rateLimiters.find(context);
725 if (it != m_rateLimiters.end()) 725 if (it != m_rateLimiters.end())
726 it->second->start(); 726 it->second->start();
727 else { 727 else {
728 scoped_refptr<RateLimiter> rateLimiter = RateLimiter::create(context, th is); 728 scoped_refptr<RateLimiter> rateLimiter = RateLimiter::create(context, th is);
729 m_rateLimiters[context] = rateLimiter; 729 m_rateLimiters[context] = rateLimiter;
730 rateLimiter->start(); 730 rateLimiter->start();
731 } 731 }
732 } 732 }
733 733
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
817 else 817 else
818 layer->notifyAnimationFinished(wallClockTime); 818 layer->notifyAnimationFinished(wallClockTime);
819 } 819 }
820 } 820 }
821 821
822 for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIn dex) 822 for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIn dex)
823 setAnimationEventsRecursive(events, layer->children()[childIndex].get(), wallClockTime); 823 setAnimationEventsRecursive(events, layer->children()[childIndex].get(), wallClockTime);
824 } 824 }
825 825
826 } // namespace cc 826 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layer_tiling_data.cc ('k') | cc/layer_tree_host_common.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698