Index: cc/surfaces/display.h |
diff --git a/cc/surfaces/display.h b/cc/surfaces/display.h |
index 22874a02c01f3b5909b92435a0a2af0efd7389d1..9f34db97696509da63ffc923c2c1b11a89be1830 100644 |
--- a/cc/surfaces/display.h |
+++ b/cc/surfaces/display.h |
@@ -11,6 +11,7 @@ |
#include "cc/output/output_surface_client.h" |
#include "cc/output/renderer.h" |
#include "cc/resources/returned_resource.h" |
+#include "cc/surfaces/display_scheduler.h" |
#include "cc/surfaces/surface_aggregator.h" |
#include "cc/surfaces/surface_id.h" |
#include "cc/surfaces/surface_manager.h" |
@@ -43,7 +44,8 @@ class TextureMailboxDeleter; |
// A Display produces a surface that can be used to draw to a physical display |
// (OutputSurface). The client is responsible for creating and sizing the |
// surface IDs used to draw into the display and deciding when to draw. |
-class CC_SURFACES_EXPORT Display : public OutputSurfaceClient, |
+class CC_SURFACES_EXPORT Display : public DisplaySchedulerClient, |
+ public OutputSurfaceClient, |
public RendererClient, |
public SurfaceDamageObserver { |
public: |
@@ -54,16 +56,18 @@ class CC_SURFACES_EXPORT Display : public OutputSurfaceClient, |
const RendererSettings& settings); |
~Display() override; |
- bool Initialize(scoped_ptr<OutputSurface> output_surface); |
+ bool Initialize(scoped_ptr<OutputSurface> output_surface, |
+ DisplayScheduler* scheduler); |
// device_scale_factor is used to communicate to the external window system |
// what scale this was rendered at. |
void SetSurfaceId(SurfaceId id, float device_scale_factor); |
void Resize(const gfx::Size& new_size); |
- bool Draw(); |
SurfaceId CurrentSurfaceId(); |
- int GetMaxFramesPending(); |
+ |
+ // DisplaySchedulerClient implementation. |
+ bool DrawAndSwap() override; |
// OutputSurfaceClient implementation. |
void CommitVSyncParameters(base::TimeTicks timebase, |
@@ -92,6 +96,7 @@ class CC_SURFACES_EXPORT Display : public OutputSurfaceClient, |
private: |
void InitializeRenderer(); |
+ void UpdateRootSurfaceResourcesLocked(); |
DisplayClient* client_; |
SurfaceManager* manager_; |
@@ -102,6 +107,7 @@ class CC_SURFACES_EXPORT Display : public OutputSurfaceClient, |
gfx::Size current_surface_size_; |
float device_scale_factor_; |
scoped_ptr<OutputSurface> output_surface_; |
+ DisplayScheduler* scheduler_; |
scoped_ptr<ResourceProvider> resource_provider_; |
scoped_ptr<SurfaceAggregator> aggregator_; |
scoped_ptr<DirectRenderer> renderer_; |