Chromium Code Reviews| Index: cc/layers/surface_layer.cc |
| diff --git a/cc/layers/surface_layer.cc b/cc/layers/surface_layer.cc |
| index a849589c08e06194597335fdcbcd03162a267bdd..0bd299cde4b5189fd9aabe69d19b075b1efc59d2 100644 |
| --- a/cc/layers/surface_layer.cc |
| +++ b/cc/layers/surface_layer.cc |
| @@ -21,9 +21,9 @@ namespace cc { |
| class SatisfySwapPromise : public SwapPromise { |
| public: |
| SatisfySwapPromise( |
| - std::unique_ptr<SurfaceReferenceBase> surface_ref, |
| + base::Closure reference_returner, |
| scoped_refptr<base::SingleThreadTaskRunner> main_task_runner) |
| - : surface_ref_(std::move(surface_ref)), |
| + : reference_returner_(reference_returner), |
| main_task_runner_(std::move(main_task_runner)) {} |
| ~SatisfySwapPromise() override {} |
| @@ -34,17 +34,17 @@ class SatisfySwapPromise : public SwapPromise { |
| void WillSwap(CompositorFrameMetadata* metadata) override {} |
| void DidSwap() override { |
| - main_task_runner_->DeleteSoon(FROM_HERE, surface_ref_.release()); |
| + main_task_runner_->PostTask(FROM_HERE, reference_returner_); |
| } |
| DidNotSwapAction DidNotSwap(DidNotSwapReason reason) override { |
| - main_task_runner_->DeleteSoon(FROM_HERE, surface_ref_.release()); |
| + main_task_runner_->PostTask(FROM_HERE, reference_returner_); |
| return DidNotSwapAction::BREAK_PROMISE; |
| } |
| int64_t TraceId() const override { return 0; } |
| - std::unique_ptr<SurfaceReferenceBase> surface_ref_; |
| + base::Closure reference_returner_; |
| scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; |
| DISALLOW_COPY_AND_ASSIGN(SatisfySwapPromise); |
| @@ -67,7 +67,7 @@ void SurfaceLayer::SetSurfaceInfo(const SurfaceInfo& surface_info, |
| RemoveCurrentReference(); |
| surface_info_ = surface_info; |
| if (layer_tree_host()) { |
| - current_ref_ = |
| + reference_returner_ = |
| ref_factory_->CreateReference(layer_tree_host(), surface_info_.id()); |
| } |
| stretch_content_to_fill_bounds_ = stretch_content_to_fill_bounds; |
| @@ -92,7 +92,7 @@ void SurfaceLayer::SetLayerTreeHost(LayerTreeHost* host) { |
| RemoveCurrentReference(); |
| Layer::SetLayerTreeHost(host); |
| if (layer_tree_host()) { |
| - current_ref_ = |
| + reference_returner_ = |
| ref_factory_->CreateReference(layer_tree_host(), surface_info_.id()); |
| } |
| } |
| @@ -106,10 +106,10 @@ void SurfaceLayer::PushPropertiesTo(LayerImpl* layer) { |
| } |
| void SurfaceLayer::RemoveCurrentReference() { |
| - if (!current_ref_) |
| + if (!reference_returner_) |
| return; |
| auto swap_promise = base::MakeUnique<SatisfySwapPromise>( |
| - std::move(current_ref_), base::ThreadTaskRunnerHandle::Get()); |
| + std::move(reference_returner_), base::ThreadTaskRunnerHandle::Get()); |
|
danakj
2017/01/10 21:12:06
Just noticed, but this code should not use ThreadT
Fady Samuel
2017/01/10 21:33:07
LayerTreeHostImpl::task_runner_provider()->MainThr
Saman Sami
2017/01/10 21:56:14
Done.
|
| layer_tree_host()->GetSwapPromiseManager()->QueueSwapPromise( |
| std::move(swap_promise)); |
| } |