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

Side by Side Diff: cc/layer_tree_host_impl.cc

Issue 11048044: cc: Switch to Chromium DCHECKs and LOGs (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: remove-rebased-asserts 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
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 "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "CCAppendQuadsData.h" 10 #include "CCAppendQuadsData.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 #if CC_DCHECK_ENABLED()
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
(...skipping 10 matching lines...) Expand all
643 m_client->setNeedsCommitOnImplThread(); 643 m_client->setNeedsCommitOnImplThread();
644 m_client->onCanDrawStateChanged(canDraw()); 644 m_client->onCanDrawStateChanged(canDraw());
645 } 645 }
646 646
647 void CCLayerTreeHostImpl::setMemoryAllocationLimitBytes(size_t bytes) 647 void CCLayerTreeHostImpl::setMemoryAllocationLimitBytes(size_t bytes)
648 { 648 {
649 if (m_memoryAllocationLimitBytes == bytes) 649 if (m_memoryAllocationLimitBytes == bytes)
650 return; 650 return;
651 m_memoryAllocationLimitBytes = bytes; 651 m_memoryAllocationLimitBytes = bytes;
652 652
653 ASSERT(bytes); 653 DCHECK(bytes > 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 820
821 if (!m_renderer) 821 if (!m_renderer)
822 return; 822 return;
823 823
824 m_renderer->setVisible(visible); 824 m_renderer->setVisible(visible);
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
1009 m_renderSurfaceLayerList.clear(); 1009 m_renderSurfaceLayerList.clear();
1010 calculateRenderSurfaceLayerList(m_renderSurfaceLayerList); 1010 calculateRenderSurfaceLayerList(m_renderSurfaceLayerList);
1011 1011
1012 return m_renderSurfaceLayerList.size(); 1012 return m_renderSurfaceLayerList.size();
1013 } 1013 }
1014 1014
1015 CCInputHandlerClient::ScrollStatus CCLayerTreeHostImpl::scrollBegin(const IntPoi nt& viewportPoint, CCInputHandlerClient::ScrollInputType type) 1015 CCInputHandlerClient::ScrollStatus CCLayerTreeHostImpl::scrollBegin(const IntPoi nt& viewportPoint, CCInputHandlerClient::ScrollInputType type)
1016 { 1016 {
1017 TRACE_EVENT0("cc", "CCLayerTreeHostImpl::scrollBegin"); 1017 TRACE_EVENT0("cc", "CCLayerTreeHostImpl::scrollBegin");
1018 1018
1019 ASSERT(!m_currentlyScrollingLayerImpl); 1019 DCHECK(!m_currentlyScrollingLayerImpl);
1020 clearCurrentlyScrollingLayer(); 1020 clearCurrentlyScrollingLayer();
1021 1021
1022 if (!ensureRenderSurfaceLayerList()) 1022 if (!ensureRenderSurfaceLayerList())
1023 return ScrollIgnored; 1023 return ScrollIgnored;
1024 1024
1025 IntPoint deviceViewportPoint = viewportPoint; 1025 IntPoint deviceViewportPoint = viewportPoint;
1026 deviceViewportPoint.scale(m_deviceScaleFactor, m_deviceScaleFactor); 1026 deviceViewportPoint.scale(m_deviceScaleFactor, m_deviceScaleFactor);
1027 1027
1028 // First find out which layer was hit from the saved list of visible layers 1028 // First find out which layer was hit from the saved list of visible layers
1029 // in the most recent frame. 1029 // in the most recent frame.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1063 m_numImplThreadScrolls++; 1063 m_numImplThreadScrolls++;
1064 return ScrollStarted; 1064 return ScrollStarted;
1065 } 1065 }
1066 return ScrollIgnored; 1066 return ScrollIgnored;
1067 } 1067 }
1068 1068
1069 static FloatSize scrollLayerWithScreenSpaceDelta(CCPinchZoomViewport* viewport, CCLayerImpl& layerImpl, const FloatPoint& screenSpacePoint, const FloatSize& scr eenSpaceDelta) 1069 static FloatSize scrollLayerWithScreenSpaceDelta(CCPinchZoomViewport* viewport, CCLayerImpl& layerImpl, const FloatPoint& screenSpacePoint, const FloatSize& scr eenSpaceDelta)
1070 { 1070 {
1071 // Layers with non-invertible screen space transforms should not have passed the scroll hit 1071 // Layers with non-invertible screen space transforms should not have passed the scroll hit
1072 // test in the first place. 1072 // test in the first place.
1073 ASSERT(layerImpl.screenSpaceTransform().isInvertible()); 1073 DCHECK(layerImpl.screenSpaceTransform().isInvertible());
1074 WebTransformationMatrix inverseScreenSpaceTransform = layerImpl.screenSpaceT ransform().inverse(); 1074 WebTransformationMatrix inverseScreenSpaceTransform = layerImpl.screenSpaceT ransform().inverse();
1075 1075
1076 // First project the scroll start and end points to local layer space to fin d the scroll delta 1076 // First project the scroll start and end points to local layer space to fin d the scroll delta
1077 // in layer coordinates. 1077 // in layer coordinates.
1078 bool startClipped, endClipped; 1078 bool startClipped, endClipped;
1079 FloatPoint screenSpaceEndPoint = screenSpacePoint + screenSpaceDelta; 1079 FloatPoint screenSpaceEndPoint = screenSpacePoint + screenSpaceDelta;
1080 FloatPoint localStartPoint = CCMathUtil::projectPoint(inverseScreenSpaceTran sform, screenSpacePoint, startClipped); 1080 FloatPoint localStartPoint = CCMathUtil::projectPoint(inverseScreenSpaceTran sform, screenSpacePoint, startClipped);
1081 FloatPoint localEndPoint = CCMathUtil::projectPoint(inverseScreenSpaceTransf orm, screenSpaceEndPoint, endClipped); 1081 FloatPoint localEndPoint = CCMathUtil::projectPoint(inverseScreenSpaceTransf orm, screenSpaceEndPoint, endClipped);
1082 1082
1083 // In general scroll point coordinates should not get clipped. 1083 // In general scroll point coordinates should not get clipped.
1084 ASSERT(!startClipped); 1084 DCHECK(!startClipped);
1085 ASSERT(!endClipped); 1085 DCHECK(!endClipped);
1086 if (startClipped || endClipped) 1086 if (startClipped || endClipped)
1087 return FloatSize(); 1087 return FloatSize();
1088 1088
1089 // Apply the scroll delta. 1089 // Apply the scroll delta.
1090 FloatSize previousDelta(layerImpl.scrollDelta()); 1090 FloatSize previousDelta(layerImpl.scrollDelta());
1091 FloatSize unscrolled = layerImpl.scrollBy(localEndPoint - localStartPoint); 1091 FloatSize unscrolled = layerImpl.scrollBy(localEndPoint - localStartPoint);
1092 1092
1093 if (viewport) 1093 if (viewport)
1094 viewport->applyScroll(unscrolled); 1094 viewport->applyScroll(unscrolled);
1095 1095
1096 // Calculate the applied scroll delta in screen space coordinates. 1096 // Calculate the applied scroll delta in screen space coordinates.
1097 FloatPoint actualLocalEndPoint = localStartPoint + layerImpl.scrollDelta() - previousDelta; 1097 FloatPoint actualLocalEndPoint = localStartPoint + layerImpl.scrollDelta() - previousDelta;
1098 FloatPoint actualScreenSpaceEndPoint = CCMathUtil::mapPoint(layerImpl.screen SpaceTransform(), actualLocalEndPoint, endClipped); 1098 FloatPoint actualScreenSpaceEndPoint = CCMathUtil::mapPoint(layerImpl.screen SpaceTransform(), actualLocalEndPoint, endClipped);
1099 ASSERT(!endClipped); 1099 DCHECK(!endClipped);
1100 if (endClipped) 1100 if (endClipped)
1101 return FloatSize(); 1101 return FloatSize();
1102 return actualScreenSpaceEndPoint - screenSpacePoint; 1102 return actualScreenSpaceEndPoint - screenSpacePoint;
1103 } 1103 }
1104 1104
1105 static FloatSize scrollLayerWithLocalDelta(CCLayerImpl& layerImpl, const FloatSi ze& localDelta) 1105 static FloatSize scrollLayerWithLocalDelta(CCLayerImpl& layerImpl, const FloatSi ze& localDelta)
1106 { 1106 {
1107 FloatSize previousDelta(layerImpl.scrollDelta()); 1107 FloatSize previousDelta(layerImpl.scrollDelta());
1108 layerImpl.scrollBy(localDelta); 1108 layerImpl.scrollBy(localDelta);
1109 return layerImpl.scrollDelta() - previousDelta; 1109 return layerImpl.scrollDelta() - previousDelta;
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
1377 setBackgroundTickingEnabled(!m_visible && m_needsAnimateLayers); 1377 setBackgroundTickingEnabled(!m_visible && m_needsAnimateLayers);
1378 } 1378 }
1379 1379
1380 base::TimeDelta CCLayerTreeHostImpl::lowFrequencyAnimationInterval() const 1380 base::TimeDelta CCLayerTreeHostImpl::lowFrequencyAnimationInterval() const
1381 { 1381 {
1382 return base::TimeDelta::FromSeconds(1); 1382 return base::TimeDelta::FromSeconds(1);
1383 } 1383 }
1384 1384
1385 void CCLayerTreeHostImpl::sendDidLoseContextRecursive(CCLayerImpl* current) 1385 void CCLayerTreeHostImpl::sendDidLoseContextRecursive(CCLayerImpl* current)
1386 { 1386 {
1387 ASSERT(current); 1387 DCHECK(current);
1388 current->didLoseContext(); 1388 current->didLoseContext();
1389 if (current->maskLayer()) 1389 if (current->maskLayer())
1390 sendDidLoseContextRecursive(current->maskLayer()); 1390 sendDidLoseContextRecursive(current->maskLayer());
1391 if (current->replicaLayer()) 1391 if (current->replicaLayer())
1392 sendDidLoseContextRecursive(current->replicaLayer()); 1392 sendDidLoseContextRecursive(current->replicaLayer());
1393 for (size_t i = 0; i < current->children().size(); ++i) 1393 for (size_t i = 0; i < current->children().size(); ++i)
1394 sendDidLoseContextRecursive(current->children()[i]); 1394 sendDidLoseContextRecursive(current->children()[i]);
1395 } 1395 }
1396 1396
1397 static void clearRenderSurfacesOnCCLayerImplRecursive(CCLayerImpl* current) 1397 static void clearRenderSurfacesOnCCLayerImplRecursive(CCLayerImpl* current)
1398 { 1398 {
1399 ASSERT(current); 1399 DCHECK(current);
1400 for (size_t i = 0; i < current->children().size(); ++i) 1400 for (size_t i = 0; i < current->children().size(); ++i)
1401 clearRenderSurfacesOnCCLayerImplRecursive(current->children()[i]); 1401 clearRenderSurfacesOnCCLayerImplRecursive(current->children()[i]);
1402 current->clearRenderSurface(); 1402 current->clearRenderSurface();
1403 } 1403 }
1404 1404
1405 void CCLayerTreeHostImpl::clearRenderSurfaces() 1405 void CCLayerTreeHostImpl::clearRenderSurfaces()
1406 { 1406 {
1407 clearRenderSurfacesOnCCLayerImplRecursive(m_rootLayerImpl.get()); 1407 clearRenderSurfacesOnCCLayerImplRecursive(m_rootLayerImpl.get());
1408 m_renderSurfaceLayerList.clear(); 1408 m_renderSurfaceLayerList.clear();
1409 } 1409 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1453 1453
1454 CCScrollbarAnimationController* scrollbarController = layer->scrollbarAnimat ionController(); 1454 CCScrollbarAnimationController* scrollbarController = layer->scrollbarAnimat ionController();
1455 if (scrollbarController && scrollbarController->animate(monotonicTime)) 1455 if (scrollbarController && scrollbarController->animate(monotonicTime))
1456 m_client->setNeedsRedrawOnImplThread(); 1456 m_client->setNeedsRedrawOnImplThread();
1457 1457
1458 for (size_t i = 0; i < layer->children().size(); ++i) 1458 for (size_t i = 0; i < layer->children().size(); ++i)
1459 animateScrollbarsRecursive(layer->children()[i], monotonicTime); 1459 animateScrollbarsRecursive(layer->children()[i], monotonicTime);
1460 } 1460 }
1461 1461
1462 } // namespace cc 1462 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698