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 "cc/layer_tree_host_impl.h" | 5 #include "cc/layer_tree_host_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
557 frame.renderPasses.erase(toRemove); | 557 frame.renderPasses.erase(toRemove); |
558 | 558 |
559 // Now follow up for all RenderPass quads and remove their RenderPasses recu
rsively. | 559 // Now follow up for all RenderPass quads and remove their RenderPasses recu
rsively. |
560 const QuadList& quadList = removedPass->quadList(); | 560 const QuadList& quadList = removedPass->quadList(); |
561 QuadList::constBackToFrontIterator quadListIterator = quadList.backToFrontBe
gin(); | 561 QuadList::constBackToFrontIterator quadListIterator = quadList.backToFrontBe
gin(); |
562 for (; quadListIterator != quadList.backToFrontEnd(); ++quadListIterator) { | 562 for (; quadListIterator != quadList.backToFrontEnd(); ++quadListIterator) { |
563 DrawQuad* currentQuad = (*quadListIterator); | 563 DrawQuad* currentQuad = (*quadListIterator); |
564 if (currentQuad->material != DrawQuad::RENDER_PASS) | 564 if (currentQuad->material != DrawQuad::RENDER_PASS) |
565 continue; | 565 continue; |
566 | 566 |
567 RenderPass::Id nextRemoveRenderPassId = RenderPassDrawQuad::materialCast
(currentQuad)->renderPassId(); | 567 RenderPass::Id nextRemoveRenderPassId = RenderPassDrawQuad::MaterialCast
(currentQuad)->render_pass_id; |
568 removeRenderPassesRecursive(nextRemoveRenderPassId, frame); | 568 removeRenderPassesRecursive(nextRemoveRenderPassId, frame); |
569 } | 569 } |
570 } | 570 } |
571 | 571 |
572 bool LayerTreeHostImpl::CullRenderPassesWithCachedTextures::shouldRemoveRenderPa
ss(const RenderPassDrawQuad& quad, const FrameData&) const | 572 bool LayerTreeHostImpl::CullRenderPassesWithCachedTextures::shouldRemoveRenderPa
ss(const RenderPassDrawQuad& quad, const FrameData&) const |
573 { | 573 { |
574 return quad.contentsChangedSinceLastFrame().IsEmpty() && m_renderer.haveCach
edResourcesForRenderPassId(quad.renderPassId()); | 574 return quad.contents_changed_since_last_frame.IsEmpty() && m_renderer.haveCa
chedResourcesForRenderPassId(quad.render_pass_id); |
575 } | 575 } |
576 | 576 |
577 bool LayerTreeHostImpl::CullRenderPassesWithNoQuads::shouldRemoveRenderPass(cons
t RenderPassDrawQuad& quad, const FrameData& frame) const | 577 bool LayerTreeHostImpl::CullRenderPassesWithNoQuads::shouldRemoveRenderPass(cons
t RenderPassDrawQuad& quad, const FrameData& frame) const |
578 { | 578 { |
579 const RenderPass* renderPass = findRenderPassById(quad.renderPassId(), frame
); | 579 const RenderPass* renderPass = findRenderPassById(quad.render_pass_id, frame
); |
580 const RenderPassList& renderPasses = frame.renderPasses; | 580 const RenderPassList& renderPasses = frame.renderPasses; |
581 RenderPassList::const_iterator foundPass = std::find(renderPasses.begin(), r
enderPasses.end(), renderPass); | 581 RenderPassList::const_iterator foundPass = std::find(renderPasses.begin(), r
enderPasses.end(), renderPass); |
582 | 582 |
583 bool renderPassAlreadyRemoved = foundPass == renderPasses.end(); | 583 bool renderPassAlreadyRemoved = foundPass == renderPasses.end(); |
584 if (renderPassAlreadyRemoved) | 584 if (renderPassAlreadyRemoved) |
585 return false; | 585 return false; |
586 | 586 |
587 // If any quad or RenderPass draws into this RenderPass, then keep it. | 587 // If any quad or RenderPass draws into this RenderPass, then keep it. |
588 const QuadList& quadList = (*foundPass)->quadList(); | 588 const QuadList& quadList = (*foundPass)->quadList(); |
589 for (QuadList::constBackToFrontIterator quadListIterator = quadList.backToFr
ontBegin(); quadListIterator != quadList.backToFrontEnd(); ++quadListIterator) { | 589 for (QuadList::constBackToFrontIterator quadListIterator = quadList.backToFr
ontBegin(); quadListIterator != quadList.backToFrontEnd(); ++quadListIterator) { |
590 DrawQuad* currentQuad = *quadListIterator; | 590 DrawQuad* currentQuad = *quadListIterator; |
591 | 591 |
592 if (currentQuad->material != DrawQuad::RENDER_PASS) | 592 if (currentQuad->material != DrawQuad::RENDER_PASS) |
593 return false; | 593 return false; |
594 | 594 |
595 const RenderPass* contributingPass = findRenderPassById(RenderPassDrawQu
ad::materialCast(currentQuad)->renderPassId(), frame); | 595 const RenderPass* contributingPass = findRenderPassById(RenderPassDrawQu
ad::MaterialCast(currentQuad)->render_pass_id, frame); |
596 RenderPassList::const_iterator foundContributingPass = std::find(renderP
asses.begin(), renderPasses.end(), contributingPass); | 596 RenderPassList::const_iterator foundContributingPass = std::find(renderP
asses.begin(), renderPasses.end(), contributingPass); |
597 if (foundContributingPass != renderPasses.end()) | 597 if (foundContributingPass != renderPasses.end()) |
598 return false; | 598 return false; |
599 } | 599 } |
600 return true; | 600 return true; |
601 } | 601 } |
602 | 602 |
603 // Defined for linking tests. | 603 // Defined for linking tests. |
604 template CC_EXPORT void LayerTreeHostImpl::removeRenderPasses<LayerTreeHostImpl:
:CullRenderPassesWithCachedTextures>(CullRenderPassesWithCachedTextures, FrameDa
ta&); | 604 template CC_EXPORT void LayerTreeHostImpl::removeRenderPasses<LayerTreeHostImpl:
:CullRenderPassesWithCachedTextures>(CullRenderPassesWithCachedTextures, FrameDa
ta&); |
605 template CC_EXPORT void LayerTreeHostImpl::removeRenderPasses<LayerTreeHostImpl:
:CullRenderPassesWithNoQuads>(CullRenderPassesWithNoQuads, FrameData&); | 605 template CC_EXPORT void LayerTreeHostImpl::removeRenderPasses<LayerTreeHostImpl:
:CullRenderPassesWithNoQuads>(CullRenderPassesWithNoQuads, FrameData&); |
(...skipping 16 matching lines...) Expand all Loading... |
622 RenderPassDrawQuad* renderPassQuad = static_cast<RenderPassDrawQuad*
>(currentQuad); | 622 RenderPassDrawQuad* renderPassQuad = static_cast<RenderPassDrawQuad*
>(currentQuad); |
623 if (!culler.shouldRemoveRenderPass(*renderPassQuad, frame)) | 623 if (!culler.shouldRemoveRenderPass(*renderPassQuad, frame)) |
624 continue; | 624 continue; |
625 | 625 |
626 // We are changing the vector in the middle of iteration. Because we | 626 // We are changing the vector in the middle of iteration. Because we |
627 // delete render passes that draw into the current pass, we are | 627 // delete render passes that draw into the current pass, we are |
628 // guaranteed that any data from the iterator to the end will not | 628 // guaranteed that any data from the iterator to the end will not |
629 // change. So, capture the iterator position from the end of the | 629 // change. So, capture the iterator position from the end of the |
630 // list, and restore it after the change. | 630 // list, and restore it after the change. |
631 int positionFromEnd = frame.renderPasses.size() - it; | 631 int positionFromEnd = frame.renderPasses.size() - it; |
632 removeRenderPassesRecursive(renderPassQuad->renderPassId(), frame); | 632 removeRenderPassesRecursive(renderPassQuad->render_pass_id, frame); |
633 it = frame.renderPasses.size() - positionFromEnd; | 633 it = frame.renderPasses.size() - positionFromEnd; |
634 DCHECK(it >= 0); | 634 DCHECK(it >= 0); |
635 } | 635 } |
636 } | 636 } |
637 } | 637 } |
638 | 638 |
639 bool LayerTreeHostImpl::prepareToDraw(FrameData& frame) | 639 bool LayerTreeHostImpl::prepareToDraw(FrameData& frame) |
640 { | 640 { |
641 TRACE_EVENT0("cc", "LayerTreeHostImpl::prepareToDraw"); | 641 TRACE_EVENT0("cc", "LayerTreeHostImpl::prepareToDraw"); |
642 DCHECK(canDraw()); | 642 DCHECK(canDraw()); |
(...skipping 862 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1505 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio
nController(); | 1505 ScrollbarAnimationController* scrollbarController = layer->scrollbarAnimatio
nController(); |
1506 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); | 1506 double monotonicTime = (time - base::TimeTicks()).InSecondsF(); |
1507 if (scrollbarController && scrollbarController->animate(monotonicTime)) | 1507 if (scrollbarController && scrollbarController->animate(monotonicTime)) |
1508 m_client->setNeedsRedrawOnImplThread(); | 1508 m_client->setNeedsRedrawOnImplThread(); |
1509 | 1509 |
1510 for (size_t i = 0; i < layer->children().size(); ++i) | 1510 for (size_t i = 0; i < layer->children().size(); ++i) |
1511 animateScrollbarsRecursive(layer->children()[i], time); | 1511 animateScrollbarsRecursive(layer->children()[i], time); |
1512 } | 1512 } |
1513 | 1513 |
1514 } // namespace cc | 1514 } // namespace cc |
OLD | NEW |