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/trees/layer_tree_host_impl.h" | 5 #include "cc/trees/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 692 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
703 | 703 |
704 DCHECK(to_remove != render_passes.end()); | 704 DCHECK(to_remove != render_passes.end()); |
705 | 705 |
706 scoped_ptr<RenderPass> removed_pass = render_passes.take(to_remove); | 706 scoped_ptr<RenderPass> removed_pass = render_passes.take(to_remove); |
707 frame->render_passes.erase(to_remove); | 707 frame->render_passes.erase(to_remove); |
708 frame->render_passes_by_id.erase(remove_render_pass_id); | 708 frame->render_passes_by_id.erase(remove_render_pass_id); |
709 | 709 |
710 // Now follow up for all RenderPass quads and remove their RenderPasses | 710 // Now follow up for all RenderPass quads and remove their RenderPasses |
711 // recursively. | 711 // recursively. |
712 const QuadList& quad_list = removed_pass->quad_list; | 712 const QuadList& quad_list = removed_pass->quad_list; |
713 QuadList::constBackToFrontIterator quad_list_iterator = | 713 QuadList::ConstBackToFrontIterator quad_list_iterator = |
714 quad_list.backToFrontBegin(); | 714 quad_list.BackToFrontBegin(); |
715 for (; quad_list_iterator != quad_list.backToFrontEnd(); | 715 for (; quad_list_iterator != quad_list.BackToFrontEnd(); |
716 ++quad_list_iterator) { | 716 ++quad_list_iterator) { |
717 DrawQuad* current_quad = (*quad_list_iterator); | 717 DrawQuad* current_quad = (*quad_list_iterator); |
718 if (current_quad->material != DrawQuad::RENDER_PASS) | 718 if (current_quad->material != DrawQuad::RENDER_PASS) |
719 continue; | 719 continue; |
720 | 720 |
721 RenderPass::Id next_remove_render_pass_id = | 721 RenderPass::Id next_remove_render_pass_id = |
722 RenderPassDrawQuad::MaterialCast(current_quad)->render_pass_id; | 722 RenderPassDrawQuad::MaterialCast(current_quad)->render_pass_id; |
723 RemoveRenderPassesRecursive(next_remove_render_pass_id, frame); | 723 RemoveRenderPassesRecursive(next_remove_render_pass_id, frame); |
724 } | 724 } |
725 } | 725 } |
(...skipping 17 matching lines...) Expand all Loading... |
743 | 743 |
744 bool LayerTreeHostImpl::CullRenderPassesWithNoQuads::ShouldRemoveRenderPass( | 744 bool LayerTreeHostImpl::CullRenderPassesWithNoQuads::ShouldRemoveRenderPass( |
745 const RenderPassDrawQuad& quad, const FrameData& frame) const { | 745 const RenderPassDrawQuad& quad, const FrameData& frame) const { |
746 const RenderPass* render_pass = | 746 const RenderPass* render_pass = |
747 FindRenderPassById(quad.render_pass_id, frame); | 747 FindRenderPassById(quad.render_pass_id, frame); |
748 if (!render_pass) | 748 if (!render_pass) |
749 return false; | 749 return false; |
750 | 750 |
751 // If any quad or RenderPass draws into this RenderPass, then keep it. | 751 // If any quad or RenderPass draws into this RenderPass, then keep it. |
752 const QuadList& quad_list = render_pass->quad_list; | 752 const QuadList& quad_list = render_pass->quad_list; |
753 for (QuadList::constBackToFrontIterator quad_list_iterator = | 753 for (QuadList::ConstBackToFrontIterator quad_list_iterator = |
754 quad_list.backToFrontBegin(); | 754 quad_list.BackToFrontBegin(); |
755 quad_list_iterator != quad_list.backToFrontEnd(); | 755 quad_list_iterator != quad_list.BackToFrontEnd(); |
756 ++quad_list_iterator) { | 756 ++quad_list_iterator) { |
757 DrawQuad* current_quad = *quad_list_iterator; | 757 DrawQuad* current_quad = *quad_list_iterator; |
758 | 758 |
759 if (current_quad->material != DrawQuad::RENDER_PASS) | 759 if (current_quad->material != DrawQuad::RENDER_PASS) |
760 return false; | 760 return false; |
761 | 761 |
762 const RenderPass* contributing_pass = FindRenderPassById( | 762 const RenderPass* contributing_pass = FindRenderPassById( |
763 RenderPassDrawQuad::MaterialCast(current_quad)->render_pass_id, frame); | 763 RenderPassDrawQuad::MaterialCast(current_quad)->render_pass_id, frame); |
764 if (contributing_pass) | 764 if (contributing_pass) |
765 return false; | 765 return false; |
(...skipping 11 matching lines...) Expand all Loading... |
777 | 777 |
778 // static | 778 // static |
779 template <typename RenderPassCuller> | 779 template <typename RenderPassCuller> |
780 void LayerTreeHostImpl::RemoveRenderPasses(RenderPassCuller culler, | 780 void LayerTreeHostImpl::RemoveRenderPasses(RenderPassCuller culler, |
781 FrameData* frame) { | 781 FrameData* frame) { |
782 for (size_t it = culler.RenderPassListBegin(frame->render_passes); | 782 for (size_t it = culler.RenderPassListBegin(frame->render_passes); |
783 it != culler.RenderPassListEnd(frame->render_passes); | 783 it != culler.RenderPassListEnd(frame->render_passes); |
784 it = culler.RenderPassListNext(it)) { | 784 it = culler.RenderPassListNext(it)) { |
785 const RenderPass* current_pass = frame->render_passes[it]; | 785 const RenderPass* current_pass = frame->render_passes[it]; |
786 const QuadList& quad_list = current_pass->quad_list; | 786 const QuadList& quad_list = current_pass->quad_list; |
787 QuadList::constBackToFrontIterator quad_list_iterator = | 787 QuadList::ConstBackToFrontIterator quad_list_iterator = |
788 quad_list.backToFrontBegin(); | 788 quad_list.BackToFrontBegin(); |
789 | 789 |
790 for (; quad_list_iterator != quad_list.backToFrontEnd(); | 790 for (; quad_list_iterator != quad_list.BackToFrontEnd(); |
791 ++quad_list_iterator) { | 791 ++quad_list_iterator) { |
792 DrawQuad* current_quad = *quad_list_iterator; | 792 DrawQuad* current_quad = *quad_list_iterator; |
793 | 793 |
794 if (current_quad->material != DrawQuad::RENDER_PASS) | 794 if (current_quad->material != DrawQuad::RENDER_PASS) |
795 continue; | 795 continue; |
796 | 796 |
797 const RenderPassDrawQuad* render_pass_quad = | 797 const RenderPassDrawQuad* render_pass_quad = |
798 RenderPassDrawQuad::MaterialCast(current_quad); | 798 RenderPassDrawQuad::MaterialCast(current_quad); |
799 if (!culler.ShouldRemoveRenderPass(*render_pass_quad, *frame)) | 799 if (!culler.ShouldRemoveRenderPass(*render_pass_quad, *frame)) |
800 continue; | 800 continue; |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1034 gfx::SizeF dip_size = | 1034 gfx::SizeF dip_size = |
1035 gfx::ScaleSize(DeviceViewportSize(), 1.f / device_scale_factor()); | 1035 gfx::ScaleSize(DeviceViewportSize(), 1.f / device_scale_factor()); |
1036 | 1036 |
1037 // The clip layer should be used if non-overlay scrollbars may exist since | 1037 // The clip layer should be used if non-overlay scrollbars may exist since |
1038 // it adjusts for them. | 1038 // it adjusts for them. |
1039 LayerImpl* clip_layer = active_tree_->RootClipLayer(); | 1039 LayerImpl* clip_layer = active_tree_->RootClipLayer(); |
1040 if (!Settings().solid_color_scrollbars && clip_layer && | 1040 if (!Settings().solid_color_scrollbars && clip_layer && |
1041 clip_layer->masks_to_bounds()) | 1041 clip_layer->masks_to_bounds()) |
1042 dip_size = clip_layer->bounds(); | 1042 dip_size = clip_layer->bounds(); |
1043 | 1043 |
1044 float topOffset = | 1044 float top_offset = |
1045 top_controls_manager_ ? top_controls_manager_->content_top_offset() : 0.f; | 1045 top_controls_manager_ ? top_controls_manager_->content_top_offset() : 0.f; |
1046 return gfx::SizeF(dip_size.width(), | 1046 return gfx::SizeF(dip_size.width(), |
1047 dip_size.height() - topOffset - overdraw_bottom_height_); | 1047 dip_size.height() - top_offset - overdraw_bottom_height_); |
1048 } | 1048 } |
1049 | 1049 |
1050 const LayerTreeSettings& LayerTreeHostImpl::Settings() const { | 1050 const LayerTreeSettings& LayerTreeHostImpl::Settings() const { |
1051 return settings(); | 1051 return settings(); |
1052 } | 1052 } |
1053 | 1053 |
1054 void LayerTreeHostImpl::DidLoseOutputSurface() { | 1054 void LayerTreeHostImpl::DidLoseOutputSurface() { |
1055 client_->DidLoseOutputSurfaceOnImplThread(); | 1055 client_->DidLoseOutputSurfaceOnImplThread(); |
1056 } | 1056 } |
1057 | 1057 |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1352 client_->SetNeedsRedrawOnImplThread(); | 1352 client_->SetNeedsRedrawOnImplThread(); |
1353 } | 1353 } |
1354 | 1354 |
1355 bool LayerTreeHostImpl::EnsureRenderSurfaceLayerList() { | 1355 bool LayerTreeHostImpl::EnsureRenderSurfaceLayerList() { |
1356 active_tree_->UpdateDrawProperties(LayerTreeImpl::UPDATE_ACTIVE_TREE); | 1356 active_tree_->UpdateDrawProperties(LayerTreeImpl::UPDATE_ACTIVE_TREE); |
1357 return active_tree_->RenderSurfaceLayerList().size(); | 1357 return active_tree_->RenderSurfaceLayerList().size(); |
1358 } | 1358 } |
1359 | 1359 |
1360 InputHandlerClient::ScrollStatus LayerTreeHostImpl::ScrollBegin( | 1360 InputHandlerClient::ScrollStatus LayerTreeHostImpl::ScrollBegin( |
1361 gfx::Point viewport_point, InputHandlerClient::ScrollInputType type) { | 1361 gfx::Point viewport_point, InputHandlerClient::ScrollInputType type) { |
1362 TRACE_EVENT0("cc", "LayerTreeHostImpl::scrollBegin"); | 1362 TRACE_EVENT0("cc", "LayerTreeHostImpl::ScrollBegin"); |
1363 | 1363 |
1364 if (top_controls_manager_) | 1364 if (top_controls_manager_) |
1365 top_controls_manager_->ScrollBegin(); | 1365 top_controls_manager_->ScrollBegin(); |
1366 | 1366 |
1367 DCHECK(!CurrentlyScrollingLayer()); | 1367 DCHECK(!CurrentlyScrollingLayer()); |
1368 ClearCurrentlyScrollingLayer(); | 1368 ClearCurrentlyScrollingLayer(); |
1369 | 1369 |
1370 if (!EnsureRenderSurfaceLayerList()) | 1370 if (!EnsureRenderSurfaceLayerList()) |
1371 return ScrollIgnored; | 1371 return ScrollIgnored; |
1372 | 1372 |
(...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2022 debug_state_ = debug_state; | 2022 debug_state_ = debug_state; |
2023 } | 2023 } |
2024 | 2024 |
2025 void LayerTreeHostImpl::SavePaintTime(const base::TimeDelta& total_paint_time, | 2025 void LayerTreeHostImpl::SavePaintTime(const base::TimeDelta& total_paint_time, |
2026 int commit_number) { | 2026 int commit_number) { |
2027 DCHECK(debug_state_.continuous_painting); | 2027 DCHECK(debug_state_.continuous_painting); |
2028 paint_time_counter_->SavePaintTime(total_paint_time, commit_number); | 2028 paint_time_counter_->SavePaintTime(total_paint_time, commit_number); |
2029 } | 2029 } |
2030 | 2030 |
2031 } // namespace cc | 2031 } // namespace cc |
OLD | NEW |