Chromium Code Reviews| Index: components/view_manager/surfaces/surfaces_context_provider.h |
| diff --git a/components/view_manager/surfaces/surfaces_context_provider.h b/components/view_manager/surfaces/surfaces_context_provider.h |
| index b891c7b8b0785153403c56ffbb2b9a8e71006482..f2bc21b47063704402bfbdb8fa5242529c006154 100644 |
| --- a/components/view_manager/surfaces/surfaces_context_provider.h |
| +++ b/components/view_manager/surfaces/surfaces_context_provider.h |
| @@ -7,16 +7,39 @@ |
| #include "base/macros.h" |
| #include "base/synchronization/lock.h" |
| +#include "base/threading/non_thread_safe.h" |
| #include "cc/output/context_provider.h" |
| +#include "components/view_manager/gles2/gpu_state.h" |
| +#include "components/view_manager/surfaces/command_buffer_local.h" |
| +#include "gpu/command_buffer/client/gles2_cmd_helper.h" |
| +#include "gpu/command_buffer/client/gles2_implementation.h" |
| +#include "gpu/command_buffer/client/transfer_buffer.h" |
| #include "third_party/mojo/src/mojo/public/c/gles2/gles2.h" |
| #include "third_party/mojo/src/mojo/public/cpp/system/core.h" |
| +#include "ui/gfx/native_widget_types.h" |
| + |
| +namespace gles2 { |
| +class CommandBufferDriver; |
| +class CommandBufferImpl; |
| +} |
| namespace surfaces { |
| -class SurfacesContextProvider : public cc::ContextProvider { |
| +class SurfacesContextProvider : public cc::ContextProvider, |
| + public CommandBufferLocal::Client, |
| + public base::NonThreadSafe { |
| public: |
| - explicit SurfacesContextProvider( |
| - mojo::ScopedMessagePipeHandle command_buffer_handle); |
| + class Delegate { |
|
sky
2015/08/18 17:42:26
Move to own header.
Fady Samuel
2015/08/18 19:16:49
Done.
|
| + public: |
| + virtual void OnVSyncParametersUpdated(int64_t timebase, |
| + int64_t interval) = 0; |
| + protected: |
| + virtual ~Delegate() {} |
| + }; |
| + |
| + SurfacesContextProvider(Delegate* delegate, |
| + gfx::AcceleratedWidget widget, |
| + const scoped_refptr<gles2::GpuState>& state); |
| // cc::ContextProvider implementation. |
| bool BindToCurrentThread() override; |
| @@ -41,16 +64,24 @@ class SurfacesContextProvider : public cc::ContextProvider { |
| ~SurfacesContextProvider() override; |
| private: |
| - static void ContextLostThunk(void* closure) { |
| - static_cast<SurfacesContextProvider*>(closure)->ContextLost(); |
| - } |
| - void ContextLost(); |
| + // CommandBufferLocal::Client: |
| + void UpdateVSyncParameters(int64_t timebase, int64_t interval) override; |
| + void DidLoseContext() override; |
| + |
| + // From GLES2Context: |
| + // Initialized in BindToCurrentThread. |
| + scoped_ptr<gpu::gles2::GLES2CmdHelper> gles2_helper_; |
| + scoped_ptr<gpu::TransferBuffer> transfer_buffer_; |
| + scoped_ptr<gpu::gles2::GLES2Implementation> implementation_; |
| cc::ContextProvider::Capabilities capabilities_; |
| - mojo::ScopedMessagePipeHandle command_buffer_handle_; |
| - MojoGLES2Context context_; |
| LostContextCallback lost_context_callback_; |
| + Delegate* delegate_; |
| + scoped_refptr<gles2::GpuState> state_; |
| + gfx::AcceleratedWidget widget_; |
| + scoped_ptr<surfaces::CommandBufferLocal> command_buffer_local_; |
| + |
| base::Lock context_lock_; |
| DISALLOW_COPY_AND_ASSIGN(SurfacesContextProvider); |