| Index: cc/trees/proxy_main.h
|
| diff --git a/cc/trees/proxy_main.h b/cc/trees/proxy_main.h
|
| index edc2a224ab3d76dceaf75a2a07ebed9db07d359b..fbe191d57a67f587b06fd493a19e07a7cc3539a9 100644
|
| --- a/cc/trees/proxy_main.h
|
| +++ b/cc/trees/proxy_main.h
|
| @@ -5,155 +5,56 @@
|
| #ifndef CC_TREES_PROXY_MAIN_H_
|
| #define CC_TREES_PROXY_MAIN_H_
|
|
|
| -#include "base/macros.h"
|
| +#include "base/memory/weak_ptr.h"
|
| #include "cc/animation/animation_events.h"
|
| #include "cc/base/cc_export.h"
|
| #include "cc/debug/frame_timing_tracker.h"
|
| -#include "cc/input/top_controls_state.h"
|
| -#include "cc/output/output_surface.h"
|
| #include "cc/output/renderer_capabilities.h"
|
| -#include "cc/trees/channel_main.h"
|
| -#include "cc/trees/proxy.h"
|
| #include "cc/trees/proxy_common.h"
|
|
|
| namespace cc {
|
| -class BeginFrameSource;
|
| -class ChannelMain;
|
| -class LayerTreeHost;
|
| +class ThreadedChannel;
|
|
|
| -// This class aggregates all interactions that the impl side of the compositor
|
| -// needs to have with the main side.
|
| -// The class is created and lives on the main thread.
|
| -class CC_EXPORT ProxyMain : public Proxy {
|
| +// TODO(khushalsagar): The main side of ThreadProxy. It is currently defined as
|
| +// an interface with the implementation provided by ThreadProxy and will be
|
| +// made an independent class.
|
| +// The methods added to this interface should only use the MainThreadOnly or
|
| +// BlockedMainThread variables from ThreadProxy.
|
| +// See crbug/527200.
|
| +class CC_EXPORT ProxyMain {
|
| public:
|
| - static scoped_ptr<ProxyMain> CreateThreaded(
|
| - LayerTreeHost* layer_tree_host,
|
| - TaskRunnerProvider* task_runner_provider,
|
| - scoped_ptr<BeginFrameSource> external_begin_frame_source);
|
| + // TODO(khushalsagar): Make this ChannelMain*. When ProxyMain and
|
| + // ProxyImpl are split, ProxyImpl will be passed a reference to ChannelImpl
|
| + // at creation. Right now we just set it directly from ThreadedChannel
|
| + // when the impl side is initialized.
|
| + virtual void SetChannel(scoped_ptr<ThreadedChannel> threaded_channel) = 0;
|
|
|
| - ~ProxyMain() override;
|
| + protected:
|
| + virtual ~ProxyMain() {}
|
|
|
| - // Commits between the main and impl threads are processed through a pipeline
|
| - // with the following stages. For efficiency we can early out at any stage if
|
| - // we decide that no further processing is necessary.
|
| - enum CommitPipelineStage {
|
| - NO_PIPELINE_STAGE,
|
| - ANIMATE_PIPELINE_STAGE,
|
| - UPDATE_LAYERS_PIPELINE_STAGE,
|
| - COMMIT_PIPELINE_STAGE,
|
| - };
|
| -
|
| - // Virtual for testing.
|
| - virtual void DidCompleteSwapBuffers();
|
| - virtual void SetRendererCapabilities(
|
| - const RendererCapabilities& capabilities);
|
| - virtual void BeginMainFrameNotExpectedSoon();
|
| - virtual void DidCommitAndDrawFrame();
|
| - virtual void SetAnimationEvents(scoped_ptr<AnimationEventsVector> queue);
|
| - virtual void DidLoseOutputSurface();
|
| - virtual void RequestNewOutputSurface();
|
| + private:
|
| + friend class ThreadedChannel;
|
| + // Callback for main side commands received from the Channel.
|
| + virtual void DidCompleteSwapBuffers() = 0;
|
| + virtual void SetRendererCapabilitiesMainCopy(
|
| + const RendererCapabilities& capabilities) = 0;
|
| + virtual void BeginMainFrameNotExpectedSoon() = 0;
|
| + virtual void DidCommitAndDrawFrame() = 0;
|
| + virtual void SetAnimationEvents(scoped_ptr<AnimationEventsVector> queue) = 0;
|
| + virtual void DidLoseOutputSurface() = 0;
|
| + virtual void RequestNewOutputSurface() = 0;
|
| virtual void DidInitializeOutputSurface(
|
| bool success,
|
| - const RendererCapabilities& capabilities);
|
| - virtual void DidCompletePageScaleAnimation();
|
| + const RendererCapabilities& capabilities) = 0;
|
| + virtual void DidCompletePageScaleAnimation() = 0;
|
| virtual void PostFrameTimingEventsOnMain(
|
| scoped_ptr<FrameTimingTracker::CompositeTimingSet> composite_events,
|
| - scoped_ptr<FrameTimingTracker::MainFrameTimingSet> main_frame_events);
|
| + scoped_ptr<FrameTimingTracker::MainFrameTimingSet> main_frame_events) = 0;
|
| virtual void BeginMainFrame(
|
| - scoped_ptr<BeginMainFrameAndCommitState> begin_main_frame_state);
|
| + scoped_ptr<BeginMainFrameAndCommitState> begin_main_frame_state) = 0;
|
|
|
| - ChannelMain* channel_main() const { return channel_main_.get(); }
|
| - CommitPipelineStage max_requested_pipeline_stage() const {
|
| - return max_requested_pipeline_stage_;
|
| - }
|
| - CommitPipelineStage current_pipeline_stage() const {
|
| - return current_pipeline_stage_;
|
| - }
|
| - CommitPipelineStage final_pipeline_stage() const {
|
| - return final_pipeline_stage_;
|
| - }
|
| -
|
| - protected:
|
| - ProxyMain(LayerTreeHost* layer_tree_host,
|
| - TaskRunnerProvider* task_runner_provider,
|
| - scoped_ptr<BeginFrameSource> external_begin_frame_source);
|
| -
|
| - private:
|
| - friend class ProxyMainForTest;
|
| -
|
| - // Proxy implementation.
|
| - void FinishAllRendering() override;
|
| - bool IsStarted() const override;
|
| - bool CommitToActiveTree() const override;
|
| - void SetOutputSurface(OutputSurface* output_surface) override;
|
| - void SetVisible(bool visible) override;
|
| - void SetThrottleFrameProduction(bool throttle) override;
|
| - const RendererCapabilities& GetRendererCapabilities() const override;
|
| - void SetNeedsAnimate() override;
|
| - void SetNeedsUpdateLayers() override;
|
| - void SetNeedsCommit() override;
|
| - void SetNeedsRedraw(const gfx::Rect& damage_rect) override;
|
| - void SetNextCommitWaitsForActivation() override;
|
| - void NotifyInputThrottledUntilCommit() override;
|
| - void SetDeferCommits(bool defer_commits) override;
|
| - bool CommitRequested() const override;
|
| - bool BeginMainFrameRequested() const override;
|
| - void MainThreadHasStoppedFlinging() override;
|
| - void Start() override;
|
| - void Stop() override;
|
| - bool SupportsImplScrolling() const override;
|
| - bool MainFrameWillHappenForTesting() override;
|
| - void SetChildrenNeedBeginFrames(bool children_need_begin_frames) override;
|
| - void SetAuthoritativeVSyncInterval(const base::TimeDelta& interval) override;
|
| - void ReleaseOutputSurface() override;
|
| - void UpdateTopControlsState(TopControlsState constraints,
|
| - TopControlsState current,
|
| - bool animate) override;
|
| -
|
| - // This sets the channel used by ProxyMain to communicate with ProxyImpl.
|
| - void SetChannel(scoped_ptr<ChannelMain> channel_main);
|
| -
|
| - // Returns |true| if the request was actually sent, |false| if one was
|
| - // already outstanding.
|
| - bool SendCommitRequestToImplThreadIfNeeded(
|
| - CommitPipelineStage required_stage);
|
| - bool IsMainThread() const;
|
| -
|
| - LayerTreeHost* layer_tree_host_;
|
| -
|
| - TaskRunnerProvider* task_runner_provider_;
|
| -
|
| - const int layer_tree_host_id_;
|
| -
|
| - // The furthest pipeline stage which has been requested for the next
|
| - // commit.
|
| - CommitPipelineStage max_requested_pipeline_stage_;
|
| - // The commit pipeline stage that is currently being processed.
|
| - CommitPipelineStage current_pipeline_stage_;
|
| - // The commit pipeline stage at which processing for the current commit
|
| - // will stop. Only valid while we are executing the pipeline (i.e.,
|
| - // |current_pipeline_stage| is set to a pipeline stage).
|
| - CommitPipelineStage final_pipeline_stage_;
|
| -
|
| - bool commit_waits_for_activation_;
|
| -
|
| - // Set when the Proxy is started using Proxy::Start() and reset when it is
|
| - // stopped using Proxy::Stop().
|
| - bool started_;
|
| -
|
| - bool defer_commits_;
|
| -
|
| - RendererCapabilities renderer_capabilities_;
|
| -
|
| - // This holds a valid value only until ProxyImpl is created on the impl thread
|
| - // with InitializeImplOnImpl().
|
| - // TODO(khushalsagar): Remove the use of this temporary variable.
|
| - // See crbug/567930.
|
| - scoped_ptr<BeginFrameSource> external_begin_frame_source_;
|
| -
|
| - scoped_ptr<ChannelMain> channel_main_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ProxyMain);
|
| + // TODO(khushalsagar): Rename as GetWeakPtr() once ThreadProxy is split.
|
| + virtual base::WeakPtr<ProxyMain> GetMainWeakPtr() = 0;
|
| };
|
|
|
| } // namespace cc
|
|
|