Index: cc/trees/single_thread_proxy.h |
diff --git a/cc/trees/single_thread_proxy.h b/cc/trees/single_thread_proxy.h |
index 616f5767b1e14c66b2a3fe669d92e31b1678c1b4..00d0d3d2978a9842fcae53c5bd3fde432a2286e2 100644 |
--- a/cc/trees/single_thread_proxy.h |
+++ b/cc/trees/single_thread_proxy.h |
@@ -10,8 +10,10 @@ |
#include "base/time/time.h" |
#include "cc/animation/animation_events.h" |
#include "cc/output/begin_frame_args.h" |
+#include "cc/scheduler/scheduler.h" |
#include "cc/trees/layer_tree_host_impl.h" |
#include "cc/trees/proxy.h" |
+#include "cc/trees/proxy_timing_history.h" |
namespace cc { |
@@ -19,7 +21,9 @@ class ContextProvider; |
class LayerTreeHost; |
class LayerTreeHostSingleThreadClient; |
-class SingleThreadProxy : public Proxy, LayerTreeHostImplClient { |
+class SingleThreadProxy : public Proxy, |
+ LayerTreeHostImplClient, |
+ SchedulerClient { |
public: |
static scoped_ptr<Proxy> Create( |
LayerTreeHost* layer_tree_host, |
@@ -52,13 +56,34 @@ class SingleThreadProxy : public Proxy, LayerTreeHostImplClient { |
virtual void ForceSerializeOnSwapBuffers() OVERRIDE; |
virtual scoped_ptr<base::Value> AsValue() const OVERRIDE; |
virtual bool CommitPendingForTesting() OVERRIDE; |
+ virtual scoped_ptr<base::Value> SchedulerStateAsValueForTesting() OVERRIDE; |
+ |
+ // SchedulerClient implementation |
+ virtual void SetNeedsBeginImplFrame(bool enable) OVERRIDE; |
+ virtual void ScheduledActionSendBeginMainFrame() OVERRIDE; |
+ virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapIfPossible() |
+ OVERRIDE; |
+ virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapForced() OVERRIDE; |
+ virtual DrawSwapReadbackResult ScheduledActionDrawAndReadback() OVERRIDE; |
+ virtual void ScheduledActionCommit() OVERRIDE; |
+ virtual void ScheduledActionUpdateVisibleTiles() OVERRIDE; |
+ virtual void ScheduledActionActivatePendingTree() OVERRIDE; |
+ virtual void ScheduledActionBeginOutputSurfaceCreation() OVERRIDE; |
+ virtual void ScheduledActionAcquireLayerTexturesForMainThread() OVERRIDE; |
+ virtual void ScheduledActionManageTiles() OVERRIDE; |
+ virtual void DidAnticipatedDrawTimeChange(base::TimeTicks time) OVERRIDE; |
+ virtual base::TimeDelta DrawDurationEstimate() OVERRIDE; |
+ virtual base::TimeDelta BeginMainFrameToCommitDurationEstimate() OVERRIDE; |
+ virtual base::TimeDelta CommitToActivateDurationEstimate() OVERRIDE; |
+ virtual void PostBeginImplFrameDeadline(const base::Closure& closure, |
+ base::TimeTicks deadline) OVERRIDE; |
+ virtual void DidBeginImplFrameDeadline() OVERRIDE; |
// LayerTreeHostImplClient implementation |
virtual void DidLoseOutputSurfaceOnImplThread() OVERRIDE; |
virtual void DidSwapBuffersOnImplThread() OVERRIDE; |
virtual void OnSwapBuffersCompleteOnImplThread() OVERRIDE; |
- virtual void BeginImplFrame(const BeginFrameArgs& args) |
- OVERRIDE {} |
+ virtual void BeginImplFrame(const BeginFrameArgs& args) OVERRIDE; |
virtual void OnCanDrawStateChanged(bool can_draw) OVERRIDE; |
virtual void NotifyReadyToActivate() OVERRIDE; |
virtual void SetNeedsRedrawOnImplThread() OVERRIDE; |
@@ -89,20 +114,23 @@ class SingleThreadProxy : public Proxy, LayerTreeHostImplClient { |
LayerTreeHostSingleThreadClient* client); |
void OnOutputSurfaceInitializeAttempted(bool success); |
- bool CommitAndComposite(base::TimeTicks frame_begin_time, |
- const gfx::Rect& device_viewport_damage_rect, |
- bool for_readback, |
- LayerTreeHostImpl::FrameData* frame); |
- void DoCommit(scoped_ptr<ResourceUpdateQueue> queue); |
- bool DoComposite(scoped_refptr<ContextProvider> offscreen_context_provider, |
- base::TimeTicks frame_begin_time, |
- const gfx::Rect& device_viewport_damage_rect, |
- bool for_readback, |
- LayerTreeHostImpl::FrameData* frame); |
- void DidSwapFrame(); |
+ void DoCommit(base::TimeTicks frame_begin_time); |
+ DrawSwapReadbackResult::DrawResult DoComposite( |
+ scoped_refptr<ContextProvider> offscreen_context_provider, |
+ base::TimeTicks frame_begin_time, |
+ const gfx::Rect& device_viewport_damage_rect, |
+ bool for_readback, |
+ LayerTreeHostImpl::FrameData* frame); |
+ DrawSwapReadbackResult CommitAndCompositeInternal( |
+ base::TimeTicks frame_begin_time, |
+ gfx::Rect device_viewport_damage_rect, |
+ bool do_commit, |
+ bool for_readback); |
+ void DidCommitAndDrawFrame(); |
bool ShouldComposite() const; |
void UpdateBackgroundAnimateTicking(); |
+ scoped_refptr<ContextProvider> OffscreenContextProvider(); |
// Accessed on main thread only. |
LayerTreeHost* layer_tree_host_; |
@@ -114,9 +142,17 @@ class SingleThreadProxy : public Proxy, LayerTreeHostImplClient { |
scoped_ptr<LayerTreeHostImpl> layer_tree_host_impl_; |
RendererCapabilities renderer_capabilities_for_main_thread_; |
+ // Accessed from both threads. |
+ scoped_ptr<Scheduler> scheduler_on_impl_thread_; |
+ ProxyTimingHistory timing_history_; |
+ |
+ base::CancelableClosure output_surface_creation_callback_; |
+ |
bool next_frame_is_newly_committed_frame_; |
bool inside_draw_; |
+ bool defer_commits_; |
+ bool finish_commit_deferred_; |
DISALLOW_COPY_AND_ASSIGN(SingleThreadProxy); |
}; |