Index: cc/surfaces/display.h |
diff --git a/cc/surfaces/display.h b/cc/surfaces/display.h |
index 3ab9cefbe8682085a6740c4d70f312b6f272f480..d3e256d770068c2dfd3b7acefd207865c491eb31 100644 |
--- a/cc/surfaces/display.h |
+++ b/cc/surfaces/display.h |
@@ -55,11 +55,12 @@ class CC_SURFACES_EXPORT Display : public DisplaySchedulerClient, |
SurfaceManager* manager, |
SharedBitmapManager* bitmap_manager, |
gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, |
- const RendererSettings& settings); |
+ const RendererSettings& settings, |
+ uint32_t compositor_surface_namespace); |
~Display() override; |
bool Initialize(std::unique_ptr<OutputSurface> output_surface, |
- DisplayScheduler* scheduler); |
+ base::SingleThreadTaskRunner* task_runner); |
// device_scale_factor is used to communicate to the external window system |
// what scale this was rendered at. |
@@ -74,7 +75,8 @@ class CC_SURFACES_EXPORT Display : public DisplaySchedulerClient, |
// OutputSurfaceClient implementation. |
void CommitVSyncParameters(base::TimeTicks timebase, |
- base::TimeDelta interval) override; |
+ base::TimeDelta interval) override {} |
+ void SetBeginFrameSource(BeginFrameSource* source) override; |
void SetNeedsRedrawRect(const gfx::Rect& damage_rect) override; |
void DidSwapBuffers() override; |
void DidSwapBuffersComplete() override; |
@@ -96,28 +98,39 @@ class CC_SURFACES_EXPORT Display : public DisplaySchedulerClient, |
// SurfaceDamageObserver implementation. |
void OnSurfaceDamaged(SurfaceId surface, bool* changed) override; |
- private: |
+ protected: |
+ // Virtual for tests. |
+ virtual void CreateScheduler(base::SingleThreadTaskRunner* task_runner); |
+ |
void InitializeRenderer(); |
void UpdateRootSurfaceResourcesLocked(); |
DisplayClient* client_; |
- SurfaceManager* manager_; |
+ SurfaceManager* surface_manager_; |
SharedBitmapManager* bitmap_manager_; |
gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager_; |
RendererSettings settings_; |
SurfaceId current_surface_id_; |
+ uint32_t compositor_surface_namespace_; |
gfx::Size current_surface_size_; |
float device_scale_factor_; |
bool swapped_since_resize_; |
gfx::Rect external_clip_; |
std::unique_ptr<OutputSurface> output_surface_; |
- DisplayScheduler* scheduler_; |
+ // An internal synthetic BFS. May be null when not used. |
+ std::unique_ptr<BeginFrameSource> internal_begin_frame_source_; |
+ // The real BFS tied to vsync provided by the BrowserCompositorOutputSurface. |
+ BeginFrameSource* vsync_begin_frame_source_; |
+ // The current BFS driving the Display/DisplayScheduler. |
+ BeginFrameSource* observed_begin_frame_source_; |
+ std::unique_ptr<DisplayScheduler> scheduler_; |
std::unique_ptr<ResourceProvider> resource_provider_; |
std::unique_ptr<SurfaceAggregator> aggregator_; |
std::unique_ptr<DirectRenderer> renderer_; |
std::unique_ptr<TextureMailboxDeleter> texture_mailbox_deleter_; |
std::vector<ui::LatencyInfo> stored_latency_info_; |
+ private: |
DISALLOW_COPY_AND_ASSIGN(Display); |
}; |