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

Unified Diff: cc/trees/layer_tree_host.h

Issue 2317753002: cc: Abstract the LayerTreeHost. (Closed)
Patch Set: Rebase Created 4 years, 3 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/trees/layer_tree.h ('k') | cc/trees/layer_tree_host.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_host.h
diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h
index 91425f4c786a489b63b4bc2eb7f5cbf346d9a18c..3fe2abaefb59c688003862bf8e755785c0c64ae6 100644
--- a/cc/trees/layer_tree_host.h
+++ b/cc/trees/layer_tree_host.h
@@ -39,6 +39,7 @@
#include "cc/trees/compositor_mode.h"
#include "cc/trees/layer_tree.h"
#include "cc/trees/layer_tree_host_client.h"
+#include "cc/trees/layer_tree_host_interface.h"
#include "cc/trees/layer_tree_settings.h"
#include "cc/trees/proxy.h"
#include "cc/trees/swap_promise_monitor.h"
@@ -81,7 +82,20 @@ namespace proto {
class LayerTreeHost;
}
-class CC_EXPORT LayerTreeHost {
+// This class is being refactored to an interface, see LayerTreeHostInterface,
+// which is the API for the cc embedder. When adding new code to this class,
+// consider the following:
+// 1) If its state/data that gets pushed to the LayerTreeImpl during commit, add
+// it to the LayerTree.
+// 2) If it's a call from the embedder, add it to the LayerTreeHostInterface.
+// 3) If it's a call from any of the internal cc classes, i.e., LayerTree or
+// PropertyTreeBuilder, etc., add it to the LayerTreeHostInterface.
+// 4) If it's a notification from the impl thread or a call from Proxy, add it
+// to this class.
+// This class will be renamed to LayerTreeHostInProcess and will be the
+// LayerTreeHost implementation for when the impl thread for the compositor runs
+// in the same process, and thus uses a Proxy.
+class CC_EXPORT LayerTreeHost : public LayerTreeHostInterface {
public:
// TODO(sad): InitParams should be a movable type so that it can be
// std::move()d to the Create* functions.
@@ -101,7 +115,7 @@ class CC_EXPORT LayerTreeHost {
};
// The SharedBitmapManager will be used on the compositor thread.
- static std::unique_ptr<LayerTreeHost> CreateThreaded(
+ static std::unique_ptr<LayerTreeHostInterface> CreateThreaded(
scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner,
InitParams* params);
@@ -109,7 +123,7 @@ class CC_EXPORT LayerTreeHost {
LayerTreeHostSingleThreadClient* single_thread_client,
InitParams* params);
- static std::unique_ptr<LayerTreeHost> CreateRemoteServer(
+ static std::unique_ptr<LayerTreeHostInterface> CreateRemoteServer(
RemoteProtoChannel* remote_proto_channel,
InitParams* params);
@@ -119,12 +133,55 @@ class CC_EXPORT LayerTreeHost {
// a CompositorMessageToImpl::CloseImpl message from the server. This ensures
// that the client will not send any compositor messages once the
// LayerTreeHost on the server is destroyed.
- static std::unique_ptr<LayerTreeHost> CreateRemoteClient(
+ static std::unique_ptr<LayerTreeHostInterface> CreateRemoteClient(
RemoteProtoChannel* remote_proto_channel,
scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner,
InitParams* params);
- virtual ~LayerTreeHost();
+ ~LayerTreeHost() override;
+
+ // LayerTreeHostInterface implementation.
+ int GetId() const override;
+ int SourceFrameNumber() const override;
+ LayerTree* GetLayerTree() override;
+ const LayerTree* GetLayerTree() const override;
+ TaskRunnerProvider* GetTaskRunnerProvider() const override;
+ const LayerTreeSettings& GetSettings() const override;
+ void SetSurfaceClientId(uint32_t client_id) override;
+ void SetLayerTreeMutator(std::unique_ptr<LayerTreeMutator> mutator) override;
+ void QueueSwapPromise(std::unique_ptr<SwapPromise> swap_promise) override;
+ void SetHasGpuRasterizationTrigger(bool has_trigger) override;
+ void SetVisible(bool visible) override;
+ bool IsVisible() const override;
+ void SetOutputSurface(std::unique_ptr<OutputSurface> output_surface) override;
+ std::unique_ptr<OutputSurface> ReleaseOutputSurface() override;
+ void SetNeedsAnimate() override;
+ void SetNeedsUpdateLayers() override;
+ void SetNeedsCommit() override;
+ bool BeginMainFrameRequested() const override;
+ bool CommitRequested() const override;
+ void SetDeferCommits(bool defer_commits) override;
+ void LayoutAndUpdateLayers() override;
+ void Composite(base::TimeTicks frame_begin_time) override;
+ void SetNeedsRedraw() override;
+ void SetNeedsRedrawRect(const gfx::Rect& damage_rect) override;
+ void SetNextCommitForcesRedraw() override;
+ void NotifyInputThrottledUntilCommit() override;
+ void UpdateTopControlsState(TopControlsState constraints,
+ TopControlsState current,
+ bool animate) override;
+ const base::WeakPtr<InputHandler>& GetInputHandler() const override;
+ void DidStopFlinging() override;
+ void SetDebugState(const LayerTreeDebugState& debug_state) override;
+ const LayerTreeDebugState& GetDebugState() const override;
+ int ScheduleMicroBenchmark(
+ const std::string& benchmark_name,
+ std::unique_ptr<base::Value> value,
+ const MicroBenchmark::DoneCallback& callback) override;
+ bool SendMessageToMicroBenchmark(int id,
+ std::unique_ptr<base::Value> value) override;
+ void InsertSwapPromiseMonitor(SwapPromiseMonitor* monitor) override;
+ void RemoveSwapPromiseMonitor(SwapPromiseMonitor* monitor) override;
// LayerTreeHost interface to Proxy.
void WillBeginMainFrame();
@@ -132,13 +189,10 @@ class CC_EXPORT LayerTreeHost {
void BeginMainFrame(const BeginFrameArgs& args);
void BeginMainFrameNotExpectedSoon();
void AnimateLayers(base::TimeTicks monotonic_frame_begin_time);
- void DidStopFlinging();
void RequestMainFrameUpdate();
void FinishCommitOnImplThread(LayerTreeHostImpl* host_impl);
void WillCommit();
void CommitComplete();
- void SetOutputSurface(std::unique_ptr<OutputSurface> output_surface);
- std::unique_ptr<OutputSurface> ReleaseOutputSurface();
void RequestNewOutputSurface();
void DidInitializeOutputSurface();
void DidFailToInitializeOutputSurface();
@@ -150,20 +204,9 @@ class CC_EXPORT LayerTreeHost {
bool UpdateLayers();
// Called when the compositor completed page scale animation.
void DidCompletePageScaleAnimation();
+ void ApplyScrollAndScale(ScrollAndScaleSet* info);
LayerTreeHostClient* client() { return client_; }
- const base::WeakPtr<InputHandler>& GetInputHandler() {
- return input_handler_weak_ptr_;
- }
-
- void NotifyInputThrottledUntilCommit();
-
- void LayoutAndUpdateLayers();
- void Composite(base::TimeTicks frame_begin_time);
-
- void SetDeferCommits(bool defer_commits);
-
- int source_frame_number() const { return source_frame_number_; }
bool gpu_rasterization_histogram_recorded() const {
return gpu_rasterization_histogram_recorded_;
@@ -175,46 +218,15 @@ class CC_EXPORT LayerTreeHost {
return rendering_stats_instrumentation_.get();
}
- void SetNeedsAnimate();
- virtual void SetNeedsUpdateLayers();
- virtual void SetNeedsCommit();
- void SetNeedsRedraw();
- void SetNeedsRedrawRect(const gfx::Rect& damage_rect);
- bool CommitRequested() const;
- bool BeginMainFrameRequested() const;
-
void SetNextCommitWaitsForActivation();
- void SetNextCommitForcesRedraw();
-
void SetAnimationEvents(std::unique_ptr<AnimationEvents> events);
- const LayerTreeSettings& settings() const { return settings_; }
-
- void SetDebugState(const LayerTreeDebugState& debug_state);
- const LayerTreeDebugState& debug_state() const { return debug_state_; }
-
bool has_gpu_rasterization_trigger() const {
return has_gpu_rasterization_trigger_;
}
- void SetHasGpuRasterizationTrigger(bool has_trigger);
-
- void ApplyPageScaleDeltaFromImplSide(float page_scale_delta);
-
- void SetVisible(bool visible);
- bool visible() const { return visible_; }
-
- void ApplyScrollAndScale(ScrollAndScaleSet* info);
-
- void UpdateTopControlsState(TopControlsState constraints,
- TopControlsState current,
- bool animate);
Proxy* proxy() const { return proxy_.get(); }
- TaskRunnerProvider* task_runner_provider() const {
- return task_runner_provider_.get();
- }
- AnimationHost* animation_host() const;
// CreateUIResource creates a resource given a bitmap. The bitmap is
// generated via an interface function, which is called when initializing the
@@ -231,35 +243,13 @@ class CC_EXPORT LayerTreeHost {
virtual gfx::Size GetUIResourceSize(UIResourceId id) const;
- int id() const { return id_; }
-
- // Returns the id of the benchmark on success, 0 otherwise.
- int ScheduleMicroBenchmark(const std::string& benchmark_name,
- std::unique_ptr<base::Value> value,
- const MicroBenchmark::DoneCallback& callback);
- // Returns true if the message was successfully delivered and handled.
- bool SendMessageToMicroBenchmark(int id, std::unique_ptr<base::Value> value);
-
- // When a SwapPromiseMonitor is created on the main thread, it calls
- // InsertSwapPromiseMonitor() to register itself with LayerTreeHost.
- // When the monitor is destroyed, it calls RemoveSwapPromiseMonitor()
- // to unregister itself.
- void InsertSwapPromiseMonitor(SwapPromiseMonitor* monitor);
- void RemoveSwapPromiseMonitor(SwapPromiseMonitor* monitor);
-
- // Call this function when you expect there to be a swap buffer.
- // See swap_promise.h for how to use SwapPromise.
- void QueueSwapPromise(std::unique_ptr<SwapPromise> swap_promise);
void BreakSwapPromises(SwapPromise::DidNotSwapReason reason);
std::vector<std::unique_ptr<SwapPromise>> TakeSwapPromises();
size_t num_queued_swap_promises() const { return swap_promise_list_.size(); }
- void set_surface_client_id(uint32_t client_id);
SurfaceSequence CreateSurfaceSequence();
- void SetLayerTreeMutator(std::unique_ptr<LayerTreeMutator> mutator);
-
// Serializes the parts of this LayerTreeHost that is needed for a commit to a
// protobuf message. Not all members are serialized as they are not helpful
// for remote usage.
@@ -292,9 +282,6 @@ class CC_EXPORT LayerTreeHost {
return client_picture_cache_ ? client_picture_cache_.get() : nullptr;
}
- LayerTree* GetLayerTree() { return layer_tree_.get(); }
- const LayerTree* GetLayerTree() const { return layer_tree_.get(); }
-
void ResetGpuRasterizationTracking();
protected:
@@ -356,6 +343,7 @@ class CC_EXPORT LayerTreeHost {
enum { kNumFramesToConsiderBeforeGpuRasterization = 60 };
void ApplyViewportDeltas(ScrollAndScaleSet* info);
+ void ApplyPageScaleDeltaFromImplSide(float page_scale_delta);
void InitializeProxy(
std::unique_ptr<Proxy> proxy,
std::unique_ptr<BeginFrameSource> external_begin_frame_source);
« no previous file with comments | « cc/trees/layer_tree.h ('k') | cc/trees/layer_tree_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698