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

Unified Diff: cc/layers/surface_layer.cc

Issue 2616403003: Replacing SurfaceReferenceBase and SequenceSurfaceReference with Closures (Closed)
Patch Set: c Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/layers/surface_layer.h ('k') | cc/surfaces/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layers/surface_layer.cc
diff --git a/cc/layers/surface_layer.cc b/cc/layers/surface_layer.cc
index a849589c08e06194597335fdcbcd03162a267bdd..6b9f514e6e8897a6bbd7c94eb6340888502e13c8 100644
--- a/cc/layers/surface_layer.cc
+++ b/cc/layers/surface_layer.cc
@@ -8,22 +8,22 @@
#include "base/macros.h"
#include "base/memory/ptr_util.h"
-#include "base/threading/thread_task_runner_handle.h"
#include "base/trace_event/trace_event.h"
#include "cc/layers/surface_layer_impl.h"
#include "cc/output/swap_promise.h"
#include "cc/surfaces/surface_sequence_generator.h"
#include "cc/trees/layer_tree_host.h"
#include "cc/trees/swap_promise_manager.h"
+#include "cc/trees/task_runner_provider.h"
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,11 @@ 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_),
+ layer_tree_host()->GetTaskRunnerProvider()->MainThreadTaskRunner());
danakj 2017/01/11 15:25:28 One question: If the layer is not in a tree at the
danakj 2017/01/11 15:40:38 Of course, the line below would crash also. I gues
Saman Sami 2017/01/11 16:19:16 The reference would have never existed if there wa
layer_tree_host()->GetSwapPromiseManager()->QueueSwapPromise(
std::move(swap_promise));
}
« no previous file with comments | « cc/layers/surface_layer.h ('k') | cc/surfaces/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698