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 #include <limits> | 8 #include <limits> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 2743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2754 scroll_info->page_scale_delta = active_tree_->page_scale_delta(); | 2754 scroll_info->page_scale_delta = active_tree_->page_scale_delta(); |
2755 active_tree_->set_sent_page_scale_delta(scroll_info->page_scale_delta); | 2755 active_tree_->set_sent_page_scale_delta(scroll_info->page_scale_delta); |
2756 | 2756 |
2757 return scroll_info.Pass(); | 2757 return scroll_info.Pass(); |
2758 } | 2758 } |
2759 | 2759 |
2760 void LayerTreeHostImpl::SetFullRootLayerDamage() { | 2760 void LayerTreeHostImpl::SetFullRootLayerDamage() { |
2761 SetViewportDamage(gfx::Rect(DrawViewportSize())); | 2761 SetViewportDamage(gfx::Rect(DrawViewportSize())); |
2762 } | 2762 } |
2763 | 2763 |
2764 void LayerTreeHostImpl::RunOnDemandRasterTask(Task* on_demand_raster_task) { | |
2765 scoped_ptr<TaskGraphRunner> temp_task_graph_runner_holder; | |
2766 TaskGraphRunner* task_graph_runner = NULL; | |
2767 NamespaceToken on_demand_task_namespace; | |
2768 | |
2769 // Use the TaskGraphRunner on correct thread and get unique namespace token. | |
2770 if (use_gpu_rasterization_) { | |
reveman
2014/06/20 00:38:41
Can you remove these use_gpu_rasterization_ checks
boliu
2014/06/20 01:27:06
Another question. If we do this, do we have to wor
reveman
2014/06/20 01:29:21
I don't think we can generate picture-draw-quads w
| |
2771 temp_task_graph_runner_holder.reset(new TaskGraphRunner); | |
2772 task_graph_runner = temp_task_graph_runner_holder.get(); | |
2773 on_demand_task_namespace = task_graph_runner->GetNamespaceToken(); | |
2774 } else { | |
2775 task_graph_runner = RasterWorkerPool::GetTaskGraphRunner(); | |
2776 if (!on_demand_task_namespace_.IsValid()) | |
2777 on_demand_task_namespace_ = task_graph_runner->GetNamespaceToken(); | |
2778 on_demand_task_namespace = on_demand_task_namespace_; | |
2779 } | |
2780 DCHECK(task_graph_runner); | |
2781 | |
2782 // Construct a task graph that contains this single raster task. | |
2783 TaskGraph graph; | |
2784 graph.nodes.push_back( | |
2785 TaskGraph::Node(on_demand_raster_task, | |
2786 RasterWorkerPool::kOnDemandRasterTaskPriority, | |
2787 0u)); | |
2788 | |
2789 // Schedule task and wait for task graph runner to finish running it. | |
2790 task_graph_runner->ScheduleTasks(on_demand_task_namespace, &graph); | |
2791 | |
2792 if (use_gpu_rasterization_) { | |
boliu
2014/06/20 01:28:16
Also this branch can't move to CreateAndSetTileMan
reveman
2014/06/20 01:32:38
Could it instead be something like the following?
| |
2793 task_graph_runner->RunUntilIdle(); | |
2794 } else { | |
2795 task_graph_runner->WaitForTasksToFinishRunning(on_demand_task_namespace); | |
2796 } | |
2797 | |
2798 // Collect task now that it has finished running. | |
2799 Task::Vector completed_tasks; | |
2800 task_graph_runner->CollectCompletedTasks(on_demand_task_namespace, | |
2801 &completed_tasks); | |
2802 DCHECK_EQ(1u, completed_tasks.size()); | |
2803 DCHECK_EQ(completed_tasks[0], on_demand_raster_task); | |
2804 } | |
2805 | |
2764 void LayerTreeHostImpl::ScrollViewportBy(gfx::Vector2dF scroll_delta) { | 2806 void LayerTreeHostImpl::ScrollViewportBy(gfx::Vector2dF scroll_delta) { |
2765 DCHECK(InnerViewportScrollLayer()); | 2807 DCHECK(InnerViewportScrollLayer()); |
2766 LayerImpl* scroll_layer = OuterViewportScrollLayer() | 2808 LayerImpl* scroll_layer = OuterViewportScrollLayer() |
2767 ? OuterViewportScrollLayer() | 2809 ? OuterViewportScrollLayer() |
2768 : InnerViewportScrollLayer(); | 2810 : InnerViewportScrollLayer(); |
2769 | 2811 |
2770 gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(scroll_delta); | 2812 gfx::Vector2dF unused_delta = scroll_layer->ScrollBy(scroll_delta); |
2771 | 2813 |
2772 if (!unused_delta.IsZero() && (scroll_layer == OuterViewportScrollLayer())) | 2814 if (!unused_delta.IsZero() && (scroll_layer == OuterViewportScrollLayer())) |
2773 InnerViewportScrollLayer()->ScrollBy(unused_delta); | 2815 InnerViewportScrollLayer()->ScrollBy(unused_delta); |
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3108 } | 3150 } |
3109 | 3151 |
3110 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { | 3152 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { |
3111 std::vector<PictureLayerImpl*>::iterator it = | 3153 std::vector<PictureLayerImpl*>::iterator it = |
3112 std::find(picture_layers_.begin(), picture_layers_.end(), layer); | 3154 std::find(picture_layers_.begin(), picture_layers_.end(), layer); |
3113 DCHECK(it != picture_layers_.end()); | 3155 DCHECK(it != picture_layers_.end()); |
3114 picture_layers_.erase(it); | 3156 picture_layers_.erase(it); |
3115 } | 3157 } |
3116 | 3158 |
3117 } // namespace cc | 3159 } // namespace cc |
OLD | NEW |