| 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 {
|
| + 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);
|
|
|