Index: cc/surfaces/display_scheduler.h |
diff --git a/cc/surfaces/display_scheduler.h b/cc/surfaces/display_scheduler.h |
index f6822878936393bdf001ac42ec42a2f3bd778200..c5e463ac3d199ddf2a5fd59049ed34af1f532f46 100644 |
--- a/cc/surfaces/display_scheduler.h |
+++ b/cc/surfaces/display_scheduler.h |
@@ -13,13 +13,12 @@ |
#include "base/single_thread_task_runner.h" |
#include "cc/output/renderer_settings.h" |
#include "cc/scheduler/begin_frame_source.h" |
+#include "cc/surfaces/display_begin_frame_source.h" |
#include "cc/surfaces/surface_id.h" |
#include "cc/surfaces/surfaces_export.h" |
namespace cc { |
-class BeginFrameSource; |
- |
class CC_SURFACES_EXPORT DisplaySchedulerClient { |
public: |
virtual ~DisplaySchedulerClient() {} |
@@ -27,14 +26,15 @@ class CC_SURFACES_EXPORT DisplaySchedulerClient { |
virtual bool DrawAndSwap() = 0; |
}; |
-class CC_SURFACES_EXPORT DisplayScheduler : public BeginFrameObserverBase { |
+class CC_SURFACES_EXPORT DisplayScheduler |
+ : public DisplayBeginFrameSourceClient { |
public: |
- DisplayScheduler(BeginFrameSource* begin_frame_source, |
- base::SingleThreadTaskRunner* task_runner, |
+ DisplayScheduler(base::SingleThreadTaskRunner* task_runner, |
int max_pending_swaps); |
- ~DisplayScheduler() override; |
+ virtual ~DisplayScheduler(); |
void SetClient(DisplaySchedulerClient* client); |
+ void SetBeginFrameSource(DisplayBeginFrameSource* begin_frame_source); |
void SetVisible(bool visible); |
void SetRootSurfaceResourcesLocked(bool locked); |
@@ -48,25 +48,28 @@ class CC_SURFACES_EXPORT DisplayScheduler : public BeginFrameObserverBase { |
void OutputSurfaceLost(); |
- // BeginFrameObserverBase implementation |
- bool OnBeginFrameDerivedImpl(const BeginFrameArgs& args) override; |
- void OnBeginFrameSourcePausedChanged(bool paused) override; |
+ // DisplayBeginFrameSourceClient implementation. |
+ void BeginFrameObserverStatusChanged() override; |
+ void OnBeginFrame(const BeginFrameArgs& args) override; |
+ const BeginFrameArgs& LastUsedBeginFrameArgs() const override; |
protected: |
base::TimeTicks DesiredBeginFrameDeadlineTime(); |
virtual void ScheduleBeginFrameDeadline(); |
- void AttemptDrawAndSwap(); |
+ bool AttemptDrawAndSwap(); |
void OnBeginFrameDeadline(); |
- void DrawAndSwap(); |
+ bool DrawAndSwap(); |
void StartObservingBeginFrames(); |
void StopObservingBeginFrames(); |
bool ShouldDraw(); |
+ void FinishFrame(bool did_draw); |
DisplaySchedulerClient* client_; |
- BeginFrameSource* begin_frame_source_; |
+ DisplayBeginFrameSource* begin_frame_source_; |
base::SingleThreadTaskRunner* task_runner_; |
BeginFrameArgs current_begin_frame_args_; |
+ BeginFrameArgs last_used_begin_frame_args_; |
base::Closure begin_frame_deadline_closure_; |
base::CancelableClosure begin_frame_deadline_task_; |
base::TimeTicks begin_frame_deadline_task_time_; |
@@ -81,20 +84,13 @@ class CC_SURFACES_EXPORT DisplayScheduler : public BeginFrameObserverBase { |
bool inside_begin_frame_deadline_interval_; |
bool needs_draw_; |
bool expecting_root_surface_damage_because_of_resize_; |
- bool all_active_child_surfaces_ready_to_draw_; |
int pending_swaps_; |
int max_pending_swaps_; |
- bool observing_begin_frame_source_; |
+ bool observing_begin_frames_; |
SurfaceId root_surface_id_; |
- bool root_surface_damaged_; |
- bool expect_damage_from_root_surface_; |
- |
- std::set<SurfaceId> child_surface_ids_damaged_; |
- std::set<SurfaceId> child_surface_ids_damaged_prev_; |
- std::vector<SurfaceId> child_surface_ids_to_expect_damage_from_; |
base::WeakPtrFactory<DisplayScheduler> weak_ptr_factory_; |