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

Side by Side Diff: cc/layer_tree_host_impl.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_tree_host_common_unittest.cc ('k') | cc/layer_tree_host_impl_unittest.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 "CCLayerTreeHostImpl.h" 7 #include "CCLayerTreeHostImpl.h"
8 8
9 #include "CCAppendQuadsData.h" 9 #include "CCAppendQuadsData.h"
10 #include "CCDamageTracker.h" 10 #include "CCDamageTracker.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 delta = m_maxPageScaleFactor / m_pageScaleFactor; 76 delta = m_maxPageScaleFactor / m_pageScaleFactor;
77 77
78 if (delta == m_pageScaleDelta) 78 if (delta == m_pageScaleDelta)
79 return; 79 return;
80 80
81 m_pageScaleDelta = delta; 81 m_pageScaleDelta = delta;
82 } 82 }
83 83
84 bool CCPinchZoomViewport::setPageScaleFactorAndLimits(float pageScaleFactor, flo at minPageScaleFactor, float maxPageScaleFactor) 84 bool CCPinchZoomViewport::setPageScaleFactorAndLimits(float pageScaleFactor, flo at minPageScaleFactor, float maxPageScaleFactor)
85 { 85 {
86 ASSERT(pageScaleFactor); 86 DCHECK(pageScaleFactor);
87 87
88 if (m_sentPageScaleDelta == 1 && pageScaleFactor == m_pageScaleFactor && min PageScaleFactor == m_minPageScaleFactor && maxPageScaleFactor == m_maxPageScaleF actor) 88 if (m_sentPageScaleDelta == 1 && pageScaleFactor == m_pageScaleFactor && min PageScaleFactor == m_minPageScaleFactor && maxPageScaleFactor == m_maxPageScaleF actor)
89 return false; 89 return false;
90 90
91 m_minPageScaleFactor = minPageScaleFactor; 91 m_minPageScaleFactor = minPageScaleFactor;
92 m_maxPageScaleFactor = maxPageScaleFactor; 92 m_maxPageScaleFactor = maxPageScaleFactor;
93 93
94 m_pageScaleFactor = pageScaleFactor; 94 m_pageScaleFactor = pageScaleFactor;
95 return true; 95 return true;
96 } 96 }
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 , m_memoryAllocationLimitBytes(CCPrioritizedTextureManager::defaultMemoryAll ocationLimit()) 226 , m_memoryAllocationLimitBytes(CCPrioritizedTextureManager::defaultMemoryAll ocationLimit())
227 , m_backgroundColor(0) 227 , m_backgroundColor(0)
228 , m_hasTransparentBackground(false) 228 , m_hasTransparentBackground(false)
229 , m_needsAnimateLayers(false) 229 , m_needsAnimateLayers(false)
230 , m_pinchGestureActive(false) 230 , m_pinchGestureActive(false)
231 , m_fpsCounter(CCFrameRateCounter::create()) 231 , m_fpsCounter(CCFrameRateCounter::create())
232 , m_debugRectHistory(CCDebugRectHistory::create()) 232 , m_debugRectHistory(CCDebugRectHistory::create())
233 , m_numImplThreadScrolls(0) 233 , m_numImplThreadScrolls(0)
234 , m_numMainThreadScrolls(0) 234 , m_numMainThreadScrolls(0)
235 { 235 {
236 ASSERT(CCProxy::isImplThread()); 236 DCHECK(CCProxy::isImplThread());
237 didVisibilityChange(this, m_visible); 237 didVisibilityChange(this, m_visible);
238 } 238 }
239 239
240 CCLayerTreeHostImpl::~CCLayerTreeHostImpl() 240 CCLayerTreeHostImpl::~CCLayerTreeHostImpl()
241 { 241 {
242 ASSERT(CCProxy::isImplThread()); 242 DCHECK(CCProxy::isImplThread());
243 TRACE_EVENT0("cc", "CCLayerTreeHostImpl::~CCLayerTreeHostImpl()"); 243 TRACE_EVENT0("cc", "CCLayerTreeHostImpl::~CCLayerTreeHostImpl()");
244 244
245 if (m_rootLayerImpl) 245 if (m_rootLayerImpl)
246 clearRenderSurfaces(); 246 clearRenderSurfaces();
247 } 247 }
248 248
249 void CCLayerTreeHostImpl::beginCommit() 249 void CCLayerTreeHostImpl::beginCommit()
250 { 250 {
251 } 251 }
252 252
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 327
328 void CCLayerTreeHostImpl::trackDamageForAllSurfaces(CCLayerImpl* rootDrawLayer, const CCLayerList& renderSurfaceLayerList) 328 void CCLayerTreeHostImpl::trackDamageForAllSurfaces(CCLayerImpl* rootDrawLayer, const CCLayerList& renderSurfaceLayerList)
329 { 329 {
330 // For now, we use damage tracking to compute a global scissor. To do this, we must 330 // For now, we use damage tracking to compute a global scissor. To do this, we must
331 // compute all damage tracking before drawing anything, so that we know the root 331 // compute all damage tracking before drawing anything, so that we know the root
332 // damage rect. The root damage rect is then used to scissor each surface. 332 // damage rect. The root damage rect is then used to scissor each surface.
333 333
334 for (int surfaceIndex = renderSurfaceLayerList.size() - 1; surfaceIndex >= 0 ; --surfaceIndex) { 334 for (int surfaceIndex = renderSurfaceLayerList.size() - 1; surfaceIndex >= 0 ; --surfaceIndex) {
335 CCLayerImpl* renderSurfaceLayer = renderSurfaceLayerList[surfaceIndex]; 335 CCLayerImpl* renderSurfaceLayer = renderSurfaceLayerList[surfaceIndex];
336 CCRenderSurface* renderSurface = renderSurfaceLayer->renderSurface(); 336 CCRenderSurface* renderSurface = renderSurfaceLayer->renderSurface();
337 ASSERT(renderSurface); 337 DCHECK(renderSurface);
338 renderSurface->damageTracker()->updateDamageTrackingState(renderSurface- >layerList(), renderSurfaceLayer->id(), renderSurface->surfacePropertyChangedOnl yFromDescendant(), renderSurface->contentRect(), renderSurfaceLayer->maskLayer() , renderSurfaceLayer->filters()); 338 renderSurface->damageTracker()->updateDamageTrackingState(renderSurface- >layerList(), renderSurfaceLayer->id(), renderSurface->surfacePropertyChangedOnl yFromDescendant(), renderSurface->contentRect(), renderSurfaceLayer->maskLayer() , renderSurfaceLayer->filters());
339 } 339 }
340 } 340 }
341 341
342 void CCLayerTreeHostImpl::updateRootScrollLayerImplTransform() 342 void CCLayerTreeHostImpl::updateRootScrollLayerImplTransform()
343 { 343 {
344 if (m_rootScrollLayerImpl) { 344 if (m_rootScrollLayerImpl) {
345 m_rootScrollLayerImpl->setImplTransform(implTransform()); 345 m_rootScrollLayerImpl->setImplTransform(implTransform());
346 } 346 }
347 } 347 }
348 348
349 void CCLayerTreeHostImpl::calculateRenderSurfaceLayerList(CCLayerList& renderSur faceLayerList) 349 void CCLayerTreeHostImpl::calculateRenderSurfaceLayerList(CCLayerList& renderSur faceLayerList)
350 { 350 {
351 ASSERT(renderSurfaceLayerList.empty()); 351 DCHECK(renderSurfaceLayerList.empty());
352 ASSERT(m_rootLayerImpl); 352 DCHECK(m_rootLayerImpl);
353 ASSERT(m_renderer); // For maxTextureSize. 353 DCHECK(m_renderer); // For maxTextureSize.
354 354
355 { 355 {
356 updateRootScrollLayerImplTransform(); 356 updateRootScrollLayerImplTransform();
357 357
358 TRACE_EVENT0("cc", "CCLayerTreeHostImpl::calcDrawEtc"); 358 TRACE_EVENT0("cc", "CCLayerTreeHostImpl::calcDrawEtc");
359 CCLayerTreeHostCommon::calculateDrawTransforms(m_rootLayerImpl.get(), de viceViewportSize(), m_deviceScaleFactor, &m_layerSorter, rendererCapabilities(). maxTextureSize, renderSurfaceLayerList); 359 CCLayerTreeHostCommon::calculateDrawTransforms(m_rootLayerImpl.get(), de viceViewportSize(), m_deviceScaleFactor, &m_layerSorter, rendererCapabilities(). maxTextureSize, renderSurfaceLayerList);
360 360
361 trackDamageForAllSurfaces(m_rootLayerImpl.get(), renderSurfaceLayerList) ; 361 trackDamageForAllSurfaces(m_rootLayerImpl.get(), renderSurfaceLayerList) ;
362 } 362 }
363 } 363 }
364 364
365 void CCLayerTreeHostImpl::FrameData::appendRenderPass(scoped_ptr<CCRenderPass> r enderPass) 365 void CCLayerTreeHostImpl::FrameData::appendRenderPass(scoped_ptr<CCRenderPass> r enderPass)
366 { 366 {
367 CCRenderPass* pass = renderPass.get(); 367 CCRenderPass* pass = renderPass.get();
368 renderPasses.push_back(pass); 368 renderPasses.push_back(pass);
369 renderPassesById.set(pass->id(), renderPass.Pass()); 369 renderPassesById.set(pass->id(), renderPass.Pass());
370 } 370 }
371 371
372 bool CCLayerTreeHostImpl::calculateRenderPasses(FrameData& frame) 372 bool CCLayerTreeHostImpl::calculateRenderPasses(FrameData& frame)
373 { 373 {
374 ASSERT(frame.renderPasses.empty()); 374 DCHECK(frame.renderPasses.empty());
375 375
376 calculateRenderSurfaceLayerList(*frame.renderSurfaceLayerList); 376 calculateRenderSurfaceLayerList(*frame.renderSurfaceLayerList);
377 377
378 TRACE_EVENT1("cc", "CCLayerTreeHostImpl::calculateRenderPasses", "renderSurf aceLayerList.size()", static_cast<long long unsigned>(frame.renderSurfaceLayerLi st->size())); 378 TRACE_EVENT1("cc", "CCLayerTreeHostImpl::calculateRenderPasses", "renderSurf aceLayerList.size()", static_cast<long long unsigned>(frame.renderSurfaceLayerLi st->size()));
379 379
380 // Create the render passes in dependency order. 380 // Create the render passes in dependency order.
381 for (int surfaceIndex = frame.renderSurfaceLayerList->size() - 1; surfaceInd ex >= 0 ; --surfaceIndex) { 381 for (int surfaceIndex = frame.renderSurfaceLayerList->size() - 1; surfaceInd ex >= 0 ; --surfaceIndex) {
382 CCLayerImpl* renderSurfaceLayer = (*frame.renderSurfaceLayerList)[surfac eIndex]; 382 CCLayerImpl* renderSurfaceLayer = (*frame.renderSurfaceLayerList)[surfac eIndex];
383 renderSurfaceLayer->renderSurface()->appendRenderPasses(frame); 383 renderSurfaceLayer->renderSurface()->appendRenderPasses(frame);
384 } 384 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 440
441 if (appendQuadsData.hadMissingTiles) { 441 if (appendQuadsData.hadMissingTiles) {
442 bool layerHasAnimatingTransform = it->screenSpaceTransformIsAnimatin g() || it->drawTransformIsAnimating(); 442 bool layerHasAnimatingTransform = it->screenSpaceTransformIsAnimatin g() || it->drawTransformIsAnimating();
443 if (layerHasAnimatingTransform || CCSettings::jankInsteadOfCheckerbo ard()) 443 if (layerHasAnimatingTransform || CCSettings::jankInsteadOfCheckerbo ard())
444 drawFrame = false; 444 drawFrame = false;
445 } 445 }
446 446
447 occlusionTracker.leaveLayer(it); 447 occlusionTracker.leaveLayer(it);
448 } 448 }
449 449
450 #if !ASSERT_DISABLED 450 #ifndef NDEBUG
451 for (size_t i = 0; i < frame.renderPasses.size(); ++i) { 451 for (size_t i = 0; i < frame.renderPasses.size(); ++i) {
452 for (size_t j = 0; j < frame.renderPasses[i]->quadList().size(); ++j) 452 for (size_t j = 0; j < frame.renderPasses[i]->quadList().size(); ++j)
453 ASSERT(frame.renderPasses[i]->quadList()[j]->sharedQuadStateId() >= 0); 453 DCHECK(frame.renderPasses[i]->quadList()[j]->sharedQuadStateId() >= 0);
454 ASSERT(frame.renderPassesById.contains(frame.renderPasses[i]->id())); 454 DCHECK(frame.renderPassesById.contains(frame.renderPasses[i]->id()));
455 } 455 }
456 #endif 456 #endif
457 457
458 if (!m_hasTransparentBackground) { 458 if (!m_hasTransparentBackground) {
459 frame.renderPasses.back()->setHasTransparentBackground(false); 459 frame.renderPasses.back()->setHasTransparentBackground(false);
460 frame.renderPasses.back()->appendQuadsToFillScreen(m_rootLayerImpl.get() , m_backgroundColor, occlusionTracker); 460 frame.renderPasses.back()->appendQuadsToFillScreen(m_rootLayerImpl.get() , m_backgroundColor, occlusionTracker);
461 } 461 }
462 462
463 if (drawFrame) 463 if (drawFrame)
464 occlusionTracker.overdrawMetrics().recordMetrics(this); 464 occlusionTracker.overdrawMetrics().recordMetrics(this);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 // TODO(aelias): Hardcoding the first child here is weird. Think of 512 // TODO(aelias): Hardcoding the first child here is weird. Think of
513 // a cleaner way to get the contentBounds on the Impl side. 513 // a cleaner way to get the contentBounds on the Impl side.
514 if (!m_rootScrollLayerImpl || m_rootScrollLayerImpl->children().isEmpty()) 514 if (!m_rootScrollLayerImpl || m_rootScrollLayerImpl->children().isEmpty())
515 return IntSize(); 515 return IntSize();
516 return m_rootScrollLayerImpl->children()[0]->contentBounds(); 516 return m_rootScrollLayerImpl->children()[0]->contentBounds();
517 } 517 }
518 518
519 static inline CCRenderPass* findRenderPassById(CCRenderPass::Id renderPassId, co nst CCLayerTreeHostImpl::FrameData& frame) 519 static inline CCRenderPass* findRenderPassById(CCRenderPass::Id renderPassId, co nst CCLayerTreeHostImpl::FrameData& frame)
520 { 520 {
521 CCRenderPassIdHashMap::const_iterator it = frame.renderPassesById.find(rende rPassId); 521 CCRenderPassIdHashMap::const_iterator it = frame.renderPassesById.find(rende rPassId);
522 ASSERT(it != frame.renderPassesById.end()); 522 DCHECK(it != frame.renderPassesById.end());
523 return it->second; 523 return it->second;
524 } 524 }
525 525
526 static void removeRenderPassesRecursive(CCRenderPass::Id removeRenderPassId, CCL ayerTreeHostImpl::FrameData& frame) 526 static void removeRenderPassesRecursive(CCRenderPass::Id removeRenderPassId, CCL ayerTreeHostImpl::FrameData& frame)
527 { 527 {
528 CCRenderPass* removeRenderPass = findRenderPassById(removeRenderPassId, fram e); 528 CCRenderPass* removeRenderPass = findRenderPassById(removeRenderPassId, fram e);
529 CCRenderPassList& renderPasses = frame.renderPasses; 529 CCRenderPassList& renderPasses = frame.renderPasses;
530 CCRenderPassList::iterator toRemove = std::find(renderPasses.begin(), render Passes.end(), removeRenderPass); 530 CCRenderPassList::iterator toRemove = std::find(renderPasses.begin(), render Passes.end(), removeRenderPass);
531 531
532 // The pass was already removed by another quad - probably the original, and we are the replica. 532 // The pass was already removed by another quad - probably the original, and we are the replica.
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 continue; 604 continue;
605 605
606 // We are changing the vector in the middle of iteration. Because we 606 // We are changing the vector in the middle of iteration. Because we
607 // delete render passes that draw into the current pass, we are 607 // delete render passes that draw into the current pass, we are
608 // guaranteed that any data from the iterator to the end will not 608 // guaranteed that any data from the iterator to the end will not
609 // change. So, capture the iterator position from the end of the 609 // change. So, capture the iterator position from the end of the
610 // list, and restore it after the change. 610 // list, and restore it after the change.
611 int positionFromEnd = frame.renderPasses.size() - it; 611 int positionFromEnd = frame.renderPasses.size() - it;
612 removeRenderPassesRecursive(renderPassQuad->renderPassId(), frame); 612 removeRenderPassesRecursive(renderPassQuad->renderPassId(), frame);
613 it = frame.renderPasses.size() - positionFromEnd; 613 it = frame.renderPasses.size() - positionFromEnd;
614 ASSERT(it >= 0); 614 DCHECK(it >= 0);
615 } 615 }
616 } 616 }
617 } 617 }
618 618
619 bool CCLayerTreeHostImpl::prepareToDraw(FrameData& frame) 619 bool CCLayerTreeHostImpl::prepareToDraw(FrameData& frame)
620 { 620 {
621 TRACE_EVENT0("cc", "CCLayerTreeHostImpl::prepareToDraw"); 621 TRACE_EVENT0("cc", "CCLayerTreeHostImpl::prepareToDraw");
622 ASSERT(canDraw()); 622 DCHECK(canDraw());
623 623
624 frame.renderSurfaceLayerList = &m_renderSurfaceLayerList; 624 frame.renderSurfaceLayerList = &m_renderSurfaceLayerList;
625 frame.renderPasses.clear(); 625 frame.renderPasses.clear();
626 frame.renderPassesById.clear(); 626 frame.renderPassesById.clear();
627 frame.renderSurfaceLayerList->clear(); 627 frame.renderSurfaceLayerList->clear();
628 frame.willDrawLayers.clear(); 628 frame.willDrawLayers.clear();
629 629
630 if (!calculateRenderPasses(frame)) 630 if (!calculateRenderPasses(frame))
631 return false; 631 return false;
632 632
633 // If we return true, then we expect drawLayers() to be called before this f unction is called again. 633 // If we return true, then we expect drawLayers() to be called before this f unction is called again.
634 return true; 634 return true;
635 } 635 }
636 636
637 void CCLayerTreeHostImpl::reduceContentsTextureMemoryOnImplThread(size_t limitBy tes) 637 void CCLayerTreeHostImpl::reduceContentsTextureMemoryOnImplThread(size_t limitBy tes)
638 { 638 {
639 bool evictedResources = m_client->reduceContentsTextureMemoryOnImplThread(li mitBytes); 639 bool evictedResources = m_client->reduceContentsTextureMemoryOnImplThread(li mitBytes);
640 if (evictedResources) { 640 if (evictedResources) {
641 setContentsTexturesPurged(); 641 setContentsTexturesPurged();
642 m_client->setNeedsCommitOnImplThread(); 642 m_client->setNeedsCommitOnImplThread();
643 m_client->onCanDrawStateChanged(canDraw()); 643 m_client->onCanDrawStateChanged(canDraw());
644 } 644 }
645 } 645 }
646 646
647 void CCLayerTreeHostImpl::setMemoryAllocationLimitBytes(size_t bytes) 647 void CCLayerTreeHostImpl::setMemoryAllocationLimitBytes(size_t bytes)
648 { 648 {
649 ASSERT(bytes); 649 DCHECK(bytes);
650 if (m_memoryAllocationLimitBytes == bytes) 650 if (m_memoryAllocationLimitBytes == bytes)
651 return; 651 return;
652 m_memoryAllocationLimitBytes = bytes; 652 m_memoryAllocationLimitBytes = bytes;
653 reduceContentsTextureMemoryOnImplThread(m_visible ? m_memoryAllocationLimitB ytes : 0); 653 reduceContentsTextureMemoryOnImplThread(m_visible ? m_memoryAllocationLimitB ytes : 0);
654 m_client->setNeedsCommitOnImplThread(); 654 m_client->setNeedsCommitOnImplThread();
655 } 655 }
656 656
657 void CCLayerTreeHostImpl::onVSyncParametersChanged(double monotonicTimebase, dou ble intervalInSeconds) 657 void CCLayerTreeHostImpl::onVSyncParametersChanged(double monotonicTimebase, dou ble intervalInSeconds)
658 { 658 {
659 m_client->onVSyncParametersChanged(monotonicTimebase, intervalInSeconds); 659 m_client->onVSyncParametersChanged(monotonicTimebase, intervalInSeconds);
660 } 660 }
661 661
662 void CCLayerTreeHostImpl::drawLayers(const FrameData& frame) 662 void CCLayerTreeHostImpl::drawLayers(const FrameData& frame)
663 { 663 {
664 TRACE_EVENT0("cc", "CCLayerTreeHostImpl::drawLayers"); 664 TRACE_EVENT0("cc", "CCLayerTreeHostImpl::drawLayers");
665 ASSERT(canDraw()); 665 DCHECK(canDraw());
666 ASSERT(!frame.renderPasses.empty()); 666 DCHECK(!frame.renderPasses.empty());
667 667
668 // FIXME: use the frame begin time from the overall compositor scheduler. 668 // FIXME: use the frame begin time from the overall compositor scheduler.
669 // This value is currently inaccessible because it is up in Chromium's 669 // This value is currently inaccessible because it is up in Chromium's
670 // RenderWidget. 670 // RenderWidget.
671 m_fpsCounter->markBeginningOfFrame(base::TimeTicks::Now()); 671 m_fpsCounter->markBeginningOfFrame(base::TimeTicks::Now());
672 672
673 if (m_settings.showDebugRects()) 673 if (m_settings.showDebugRects())
674 m_debugRectHistory->saveDebugRectsForCurrentFrame(m_rootLayerImpl.get(), *frame.renderSurfaceLayerList, frame.occludingScreenSpaceRects, settings()); 674 m_debugRectHistory->saveDebugRectsForCurrentFrame(m_rootLayerImpl.get(), *frame.renderSurfaceLayerList, frame.occludingScreenSpaceRects, settings());
675 675
676 // Because the contents of the HUD depend on everything else in the frame, t he contents 676 // Because the contents of the HUD depend on everything else in the frame, t he contents
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
712 return m_renderer && m_renderer->isContextLost(); 712 return m_renderer && m_renderer->isContextLost();
713 } 713 }
714 714
715 const RendererCapabilities& CCLayerTreeHostImpl::rendererCapabilities() const 715 const RendererCapabilities& CCLayerTreeHostImpl::rendererCapabilities() const
716 { 716 {
717 return m_renderer->capabilities(); 717 return m_renderer->capabilities();
718 } 718 }
719 719
720 bool CCLayerTreeHostImpl::swapBuffers() 720 bool CCLayerTreeHostImpl::swapBuffers()
721 { 721 {
722 ASSERT(m_renderer); 722 DCHECK(m_renderer);
723 723
724 m_fpsCounter->markEndOfFrame(); 724 m_fpsCounter->markEndOfFrame();
725 return m_renderer->swapBuffers(); 725 return m_renderer->swapBuffers();
726 } 726 }
727 727
728 const IntSize& CCLayerTreeHostImpl::deviceViewportSize() const 728 const IntSize& CCLayerTreeHostImpl::deviceViewportSize() const
729 { 729 {
730 return m_deviceViewportSize; 730 return m_deviceViewportSize;
731 } 731 }
732 732
733 const CCLayerTreeSettings& CCLayerTreeHostImpl::settings() const 733 const CCLayerTreeSettings& CCLayerTreeHostImpl::settings() const
734 { 734 {
735 return m_settings; 735 return m_settings;
736 } 736 }
737 737
738 void CCLayerTreeHostImpl::didLoseContext() 738 void CCLayerTreeHostImpl::didLoseContext()
739 { 739 {
740 m_client->didLoseContextOnImplThread(); 740 m_client->didLoseContextOnImplThread();
741 } 741 }
742 742
743 void CCLayerTreeHostImpl::onSwapBuffersComplete() 743 void CCLayerTreeHostImpl::onSwapBuffersComplete()
744 { 744 {
745 m_client->onSwapBuffersCompleteOnImplThread(); 745 m_client->onSwapBuffersCompleteOnImplThread();
746 } 746 }
747 747
748 void CCLayerTreeHostImpl::readback(void* pixels, const IntRect& rect) 748 void CCLayerTreeHostImpl::readback(void* pixels, const IntRect& rect)
749 { 749 {
750 ASSERT(m_renderer); 750 DCHECK(m_renderer);
751 m_renderer->getFramebufferPixels(pixels, rect); 751 m_renderer->getFramebufferPixels(pixels, rect);
752 } 752 }
753 753
754 static CCLayerImpl* findRootScrollLayer(CCLayerImpl* layer) 754 static CCLayerImpl* findRootScrollLayer(CCLayerImpl* layer)
755 { 755 {
756 if (!layer) 756 if (!layer)
757 return 0; 757 return 0;
758 758
759 if (layer->scrollable()) 759 if (layer->scrollable())
760 return layer; 760 return layer;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 // Clear all data structures that have direct references to the layer tree. 804 // Clear all data structures that have direct references to the layer tree.
805 m_scrollingLayerIdFromPreviousTree = m_currentlyScrollingLayerImpl ? m_curre ntlyScrollingLayerImpl->id() : -1; 805 m_scrollingLayerIdFromPreviousTree = m_currentlyScrollingLayerImpl ? m_curre ntlyScrollingLayerImpl->id() : -1;
806 m_currentlyScrollingLayerImpl = 0; 806 m_currentlyScrollingLayerImpl = 0;
807 m_renderSurfaceLayerList.clear(); 807 m_renderSurfaceLayerList.clear();
808 808
809 return m_rootLayerImpl.Pass(); 809 return m_rootLayerImpl.Pass();
810 } 810 }
811 811
812 void CCLayerTreeHostImpl::setVisible(bool visible) 812 void CCLayerTreeHostImpl::setVisible(bool visible)
813 { 813 {
814 ASSERT(CCProxy::isImplThread()); 814 DCHECK(CCProxy::isImplThread());
815 815
816 if (m_visible == visible) 816 if (m_visible == visible)
817 return; 817 return;
818 m_visible = visible; 818 m_visible = visible;
819 didVisibilityChange(this, m_visible); 819 didVisibilityChange(this, m_visible);
820 reduceContentsTextureMemoryOnImplThread(m_visible ? m_memoryAllocationLimitB ytes : 0); 820 reduceContentsTextureMemoryOnImplThread(m_visible ? m_memoryAllocationLimitB ytes : 0);
821 821
822 if (!m_renderer) 822 if (!m_renderer)
823 return; 823 return;
824 824
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 m_renderSurfaceLayerList.clear(); 1010 m_renderSurfaceLayerList.clear();
1011 calculateRenderSurfaceLayerList(m_renderSurfaceLayerList); 1011 calculateRenderSurfaceLayerList(m_renderSurfaceLayerList);
1012 1012
1013 return m_renderSurfaceLayerList.size(); 1013 return m_renderSurfaceLayerList.size();
1014 } 1014 }
1015 1015
1016 CCInputHandlerClient::ScrollStatus CCLayerTreeHostImpl::scrollBegin(const IntPoi nt& viewportPoint, CCInputHandlerClient::ScrollInputType type) 1016 CCInputHandlerClient::ScrollStatus CCLayerTreeHostImpl::scrollBegin(const IntPoi nt& viewportPoint, CCInputHandlerClient::ScrollInputType type)
1017 { 1017 {
1018 TRACE_EVENT0("cc", "CCLayerTreeHostImpl::scrollBegin"); 1018 TRACE_EVENT0("cc", "CCLayerTreeHostImpl::scrollBegin");
1019 1019
1020 ASSERT(!m_currentlyScrollingLayerImpl); 1020 DCHECK(!m_currentlyScrollingLayerImpl);
1021 clearCurrentlyScrollingLayer(); 1021 clearCurrentlyScrollingLayer();
1022 1022
1023 if (!ensureRenderSurfaceLayerList()) 1023 if (!ensureRenderSurfaceLayerList())
1024 return ScrollIgnored; 1024 return ScrollIgnored;
1025 1025
1026 IntPoint deviceViewportPoint = viewportPoint; 1026 IntPoint deviceViewportPoint = viewportPoint;
1027 deviceViewportPoint.scale(m_deviceScaleFactor, m_deviceScaleFactor); 1027 deviceViewportPoint.scale(m_deviceScaleFactor, m_deviceScaleFactor);
1028 1028
1029 // First find out which layer was hit from the saved list of visible layers 1029 // First find out which layer was hit from the saved list of visible layers
1030 // in the most recent frame. 1030 // in the most recent frame.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1064 m_numImplThreadScrolls++; 1064 m_numImplThreadScrolls++;
1065 return ScrollStarted; 1065 return ScrollStarted;
1066 } 1066 }
1067 return ScrollIgnored; 1067 return ScrollIgnored;
1068 } 1068 }
1069 1069
1070 static FloatSize scrollLayerWithScreenSpaceDelta(CCPinchZoomViewport* viewport, CCLayerImpl& layerImpl, const FloatPoint& screenSpacePoint, const FloatSize& scr eenSpaceDelta) 1070 static FloatSize scrollLayerWithScreenSpaceDelta(CCPinchZoomViewport* viewport, CCLayerImpl& layerImpl, const FloatPoint& screenSpacePoint, const FloatSize& scr eenSpaceDelta)
1071 { 1071 {
1072 // Layers with non-invertible screen space transforms should not have passed the scroll hit 1072 // Layers with non-invertible screen space transforms should not have passed the scroll hit
1073 // test in the first place. 1073 // test in the first place.
1074 ASSERT(layerImpl.screenSpaceTransform().isInvertible()); 1074 DCHECK(layerImpl.screenSpaceTransform().isInvertible());
1075 WebTransformationMatrix inverseScreenSpaceTransform = layerImpl.screenSpaceT ransform().inverse(); 1075 WebTransformationMatrix inverseScreenSpaceTransform = layerImpl.screenSpaceT ransform().inverse();
1076 1076
1077 // First project the scroll start and end points to local layer space to fin d the scroll delta 1077 // First project the scroll start and end points to local layer space to fin d the scroll delta
1078 // in layer coordinates. 1078 // in layer coordinates.
1079 bool startClipped, endClipped; 1079 bool startClipped, endClipped;
1080 FloatPoint screenSpaceEndPoint = screenSpacePoint + screenSpaceDelta; 1080 FloatPoint screenSpaceEndPoint = screenSpacePoint + screenSpaceDelta;
1081 FloatPoint localStartPoint = CCMathUtil::projectPoint(inverseScreenSpaceTran sform, screenSpacePoint, startClipped); 1081 FloatPoint localStartPoint = CCMathUtil::projectPoint(inverseScreenSpaceTran sform, screenSpacePoint, startClipped);
1082 FloatPoint localEndPoint = CCMathUtil::projectPoint(inverseScreenSpaceTransf orm, screenSpaceEndPoint, endClipped); 1082 FloatPoint localEndPoint = CCMathUtil::projectPoint(inverseScreenSpaceTransf orm, screenSpaceEndPoint, endClipped);
1083 1083
1084 // In general scroll point coordinates should not get clipped. 1084 // In general scroll point coordinates should not get clipped.
1085 ASSERT(!startClipped); 1085 DCHECK(!startClipped);
1086 ASSERT(!endClipped); 1086 DCHECK(!endClipped);
1087 if (startClipped || endClipped) 1087 if (startClipped || endClipped)
1088 return FloatSize(); 1088 return FloatSize();
1089 1089
1090 // Apply the scroll delta. 1090 // Apply the scroll delta.
1091 FloatSize previousDelta(layerImpl.scrollDelta()); 1091 FloatSize previousDelta(layerImpl.scrollDelta());
1092 FloatSize unscrolled = layerImpl.scrollBy(localEndPoint - localStartPoint); 1092 FloatSize unscrolled = layerImpl.scrollBy(localEndPoint - localStartPoint);
1093 1093
1094 if (viewport) 1094 if (viewport)
1095 viewport->applyScroll(unscrolled); 1095 viewport->applyScroll(unscrolled);
1096 1096
1097 // Calculate the applied scroll delta in screen space coordinates. 1097 // Calculate the applied scroll delta in screen space coordinates.
1098 FloatPoint actualLocalEndPoint = localStartPoint + layerImpl.scrollDelta() - previousDelta; 1098 FloatPoint actualLocalEndPoint = localStartPoint + layerImpl.scrollDelta() - previousDelta;
1099 FloatPoint actualScreenSpaceEndPoint = CCMathUtil::mapPoint(layerImpl.screen SpaceTransform(), actualLocalEndPoint, endClipped); 1099 FloatPoint actualScreenSpaceEndPoint = CCMathUtil::mapPoint(layerImpl.screen SpaceTransform(), actualLocalEndPoint, endClipped);
1100 ASSERT(!endClipped); 1100 DCHECK(!endClipped);
1101 if (endClipped) 1101 if (endClipped)
1102 return FloatSize(); 1102 return FloatSize();
1103 return actualScreenSpaceEndPoint - screenSpacePoint; 1103 return actualScreenSpaceEndPoint - screenSpacePoint;
1104 } 1104 }
1105 1105
1106 static FloatSize scrollLayerWithLocalDelta(CCLayerImpl& layerImpl, const FloatSi ze& localDelta) 1106 static FloatSize scrollLayerWithLocalDelta(CCLayerImpl& layerImpl, const FloatSi ze& localDelta)
1107 { 1107 {
1108 FloatSize previousDelta(layerImpl.scrollDelta()); 1108 FloatSize previousDelta(layerImpl.scrollDelta());
1109 layerImpl.scrollBy(localDelta); 1109 layerImpl.scrollBy(localDelta);
1110 return layerImpl.scrollDelta() - previousDelta; 1110 return layerImpl.scrollDelta() - previousDelta;
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
1378 setBackgroundTickingEnabled(!m_visible && m_needsAnimateLayers); 1378 setBackgroundTickingEnabled(!m_visible && m_needsAnimateLayers);
1379 } 1379 }
1380 1380
1381 base::TimeDelta CCLayerTreeHostImpl::lowFrequencyAnimationInterval() const 1381 base::TimeDelta CCLayerTreeHostImpl::lowFrequencyAnimationInterval() const
1382 { 1382 {
1383 return base::TimeDelta::FromSeconds(1); 1383 return base::TimeDelta::FromSeconds(1);
1384 } 1384 }
1385 1385
1386 void CCLayerTreeHostImpl::sendDidLoseContextRecursive(CCLayerImpl* current) 1386 void CCLayerTreeHostImpl::sendDidLoseContextRecursive(CCLayerImpl* current)
1387 { 1387 {
1388 ASSERT(current); 1388 DCHECK(current);
1389 current->didLoseContext(); 1389 current->didLoseContext();
1390 if (current->maskLayer()) 1390 if (current->maskLayer())
1391 sendDidLoseContextRecursive(current->maskLayer()); 1391 sendDidLoseContextRecursive(current->maskLayer());
1392 if (current->replicaLayer()) 1392 if (current->replicaLayer())
1393 sendDidLoseContextRecursive(current->replicaLayer()); 1393 sendDidLoseContextRecursive(current->replicaLayer());
1394 for (size_t i = 0; i < current->children().size(); ++i) 1394 for (size_t i = 0; i < current->children().size(); ++i)
1395 sendDidLoseContextRecursive(current->children()[i]); 1395 sendDidLoseContextRecursive(current->children()[i]);
1396 } 1396 }
1397 1397
1398 static void clearRenderSurfacesOnCCLayerImplRecursive(CCLayerImpl* current) 1398 static void clearRenderSurfacesOnCCLayerImplRecursive(CCLayerImpl* current)
1399 { 1399 {
1400 ASSERT(current); 1400 DCHECK(current);
1401 for (size_t i = 0; i < current->children().size(); ++i) 1401 for (size_t i = 0; i < current->children().size(); ++i)
1402 clearRenderSurfacesOnCCLayerImplRecursive(current->children()[i]); 1402 clearRenderSurfacesOnCCLayerImplRecursive(current->children()[i]);
1403 current->clearRenderSurface(); 1403 current->clearRenderSurface();
1404 } 1404 }
1405 1405
1406 void CCLayerTreeHostImpl::clearRenderSurfaces() 1406 void CCLayerTreeHostImpl::clearRenderSurfaces()
1407 { 1407 {
1408 clearRenderSurfacesOnCCLayerImplRecursive(m_rootLayerImpl.get()); 1408 clearRenderSurfacesOnCCLayerImplRecursive(m_rootLayerImpl.get());
1409 m_renderSurfaceLayerList.clear(); 1409 m_renderSurfaceLayerList.clear();
1410 } 1410 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1454 1454
1455 CCScrollbarAnimationController* scrollbarController = layer->scrollbarAnimat ionController(); 1455 CCScrollbarAnimationController* scrollbarController = layer->scrollbarAnimat ionController();
1456 if (scrollbarController && scrollbarController->animate(monotonicTime)) 1456 if (scrollbarController && scrollbarController->animate(monotonicTime))
1457 m_client->setNeedsRedrawOnImplThread(); 1457 m_client->setNeedsRedrawOnImplThread();
1458 1458
1459 for (size_t i = 0; i < layer->children().size(); ++i) 1459 for (size_t i = 0; i < layer->children().size(); ++i)
1460 animateScrollbarsRecursive(layer->children()[i], monotonicTime); 1460 animateScrollbarsRecursive(layer->children()[i], monotonicTime);
1461 } 1461 }
1462 1462
1463 } // namespace cc 1463 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layer_tree_host_common_unittest.cc ('k') | cc/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698