Index: components/view_manager/surfaces/top_level_display_client.h |
diff --git a/components/view_manager/surfaces/display_impl.h b/components/view_manager/surfaces/top_level_display_client.h |
similarity index 54% |
rename from components/view_manager/surfaces/display_impl.h |
rename to components/view_manager/surfaces/top_level_display_client.h |
index fb672a426b83ea8d4752cef0129f2e8e52db842a..9291e7c3e016636226fb42fbd306e6ae84b370f2 100644 |
--- a/components/view_manager/surfaces/display_impl.h |
+++ b/components/view_manager/surfaces/top_level_display_client.h |
@@ -9,43 +9,44 @@ |
#include "cc/surfaces/display_client.h" |
#include "cc/surfaces/surface_factory.h" |
#include "cc/surfaces/surface_factory_client.h" |
-#include "components/view_manager/public/interfaces/display.mojom.h" |
+#include "components/view_manager/public/interfaces/surfaces.mojom.h" |
+#include "components/view_manager/surfaces/surfaces_context_provider.h" |
+#include "components/view_manager/surfaces/surfaces_context_provider_delegate.h" |
#include "components/view_manager/surfaces/surfaces_state.h" |
#include "third_party/mojo/src/mojo/public/cpp/bindings/strong_binding.h" |
+#include "ui/gfx/native_widget_types.h" |
namespace cc { |
class Display; |
class SurfaceFactory; |
} |
+namespace gles2 { |
+class GpuState; |
+} |
+ |
namespace surfaces { |
class DisplayDelegate; |
- |
-class DisplayImpl : public mojo::Display, |
- public mojo::ViewportParameterListener, |
- public cc::DisplayClient, |
- public cc::SurfaceFactoryClient { |
+class SurfacesScheduler; |
+class SurfacesState; |
+ |
+// A TopLevelDisplayClient manages the top level surface that is rendered into a |
+// provided AcceleratedWidget. Frames are submitted here. New frames are |
+// scheduled to be generated here based on VSync. |
+class TopLevelDisplayClient |
+ : public cc::DisplayClient, |
+ public cc::SurfaceFactoryClient, |
+ public surfaces::SurfacesContextProviderDelegate { |
public: |
- DisplayImpl(DisplayDelegate* display_delegate, |
- const scoped_refptr<SurfacesState>& surfaces_state, |
- cc::SurfaceId cc_id, |
- mojo::ContextProviderPtr context_provider, |
- mojo::ResourceReturnerPtr returner, |
- mojo::InterfaceRequest<mojo::Display> display_request); |
+ TopLevelDisplayClient(gfx::AcceleratedWidget widget, |
+ const scoped_refptr<gles2::GpuState>& gpu_state, |
+ const scoped_refptr<SurfacesState>& surfaces_state); |
+ ~TopLevelDisplayClient() override; |
- // Closes the connection and destroys |this| object. |
- void CloseConnection(); |
+ void SubmitFrame(mojo::FramePtr frame, const base::Closure& callback); |
private: |
- ~DisplayImpl() override; |
- |
- void OnContextCreated(mojo::CommandBufferPtr gles2_client); |
- |
- // mojo::Display implementation: |
- void SubmitFrame(mojo::FramePtr frame, |
- const SubmitFrameCallback& callback) override; |
- |
// DisplayClient implementation. |
// TODO(rjkroege, fsamuel): This won't work correctly with multiple displays. |
void CommitVSyncParameters(base::TimeTicks timebase, |
@@ -53,7 +54,8 @@ class DisplayImpl : public mojo::Display, |
void OutputSurfaceLost() override; |
void SetMemoryPolicy(const cc::ManagedMemoryPolicy& policy) override; |
- // ViewportParameterListener |
+ // SurfacesContextProviderDelegate: |
+ void OnContextCreated(); |
void OnVSyncParametersUpdated(int64_t timebase, int64_t interval) override; |
// SurfaceFactoryClient implementation. |
@@ -61,24 +63,18 @@ class DisplayImpl : public mojo::Display, |
void Draw(); |
- DisplayDelegate* delegate_; |
+ scoped_refptr<gles2::GpuState> gpu_state_; |
scoped_refptr<SurfacesState> surfaces_state_; |
cc::SurfaceFactory factory_; |
cc::SurfaceId cc_id_; |
- mojo::ContextProviderPtr context_provider_; |
- mojo::ResourceReturnerPtr returner_; |
gfx::Size last_submitted_frame_size_; |
mojo::FramePtr pending_frame_; |
- SubmitFrameCallback pending_callback_; |
+ base::Closure pending_callback_; |
scoped_ptr<cc::Display> display_; |
- mojo::Binding<mojo::ViewportParameterListener> viewport_param_binding_; |
- mojo::Binding<mojo::Display> display_binding_; |
- bool connection_closed_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DisplayImpl); |
+ DISALLOW_COPY_AND_ASSIGN(TopLevelDisplayClient); |
}; |
} // namespace surfaces |