Chromium Code Reviews| Index: webkit/plugins/ppapi/ppb_graphics_3d_impl.h |
| =================================================================== |
| --- webkit/plugins/ppapi/ppb_graphics_3d_impl.h (revision 92541) |
| +++ webkit/plugins/ppapi/ppb_graphics_3d_impl.h (working copy) |
| @@ -5,14 +5,16 @@ |
| #ifndef WEBKIT_PLUGINS_PPAPI_PPB_GRAPHICS_3D_IMPL_H_ |
| #define WEBKIT_PLUGINS_PPAPI_PPB_GRAPHICS_3D_IMPL_H_ |
| -#include "ppapi/thunk/ppb_graphics_3d_api.h" |
| +#include "base/memory/scoped_callback_factory.h" |
| +#include "ppapi/shared_impl/graphics_3d_impl.h" |
| +#include "webkit/plugins/ppapi/plugin_delegate.h" |
| #include "webkit/plugins/ppapi/resource.h" |
| namespace webkit { |
| namespace ppapi { |
| class PPB_Graphics3D_Impl : public Resource, |
| - public ::ppapi::thunk::PPB_Graphics3D_API { |
| + public ::ppapi::Graphics3DImpl { |
| public: |
| virtual ~PPB_Graphics3D_Impl(); |
| @@ -20,22 +22,72 @@ |
| PP_Config3D_Dev config, |
| PP_Resource share_context, |
| const int32_t* attrib_list); |
| + static PP_Resource CreateRaw(PluginInstance* instance, |
| + PP_Config3D_Dev config, |
| + PP_Resource share_context, |
| + const int32_t* attrib_list); |
| - // ResourceObjectBase override. |
| + // Resource override. |
|
brettw
2011/07/15 21:10:18
I think this was better as ResourceObjectBase sinc
|
| virtual ::ppapi::thunk::PPB_Graphics3D_API* AsPPB_Graphics3D_API() OVERRIDE; |
| - // PPB_Graphics3D_API implementation. |
| - virtual int32_t GetAttribs(int32_t* attrib_list) OVERRIDE; |
| - virtual int32_t SetAttribs(int32_t* attrib_list) OVERRIDE; |
| - virtual int32_t SwapBuffers(PP_CompletionCallback callback) OVERRIDE; |
| + // PPB_Graphics3D_API trusted implementation. |
| + virtual PP_Bool InitCommandBuffer(int32_t size) OVERRIDE; |
| + virtual PP_Bool GetRingBuffer(int* shm_handle, |
| + uint32_t* shm_size) OVERRIDE; |
| + virtual PP_Graphics3DTrustedState GetState() OVERRIDE; |
| + virtual PP_Bool Flush(int32_t put_offset) OVERRIDE; |
| + virtual PP_Graphics3DTrustedState FlushSync(int32_t put_offset) OVERRIDE; |
| + virtual int32_t CreateTransferBuffer(uint32_t size) OVERRIDE; |
| + virtual PP_Bool DestroyTransferBuffer(int32_t id) OVERRIDE; |
| + virtual PP_Bool GetTransferBuffer(int32_t id, |
| + int* shm_handle, |
| + uint32_t* shm_size) OVERRIDE; |
| + virtual PP_Graphics3DTrustedState FlushSyncFast( |
| + int32_t put_offset, |
| + int32_t last_known_get) OVERRIDE; |
| + // Binds/unbinds the graphics of this context with the associated instance. |
| + // Returns true if binding/unbinding is successful. |
| + bool BindToInstance(bool bind); |
| + |
| + // Returns the id of texture that can be used by the compositor. |
| + unsigned int GetBackingTextureId(); |
| + |
| + // Notifications that the view has rendered the page and that it has been |
| + // flushed to the screen. These messages are used to send Flush callbacks to |
| + // the plugin. |
| + void ViewInitiatedPaint(); |
| + void ViewFlushedPaint(); |
| + |
| + protected: |
| + // ppapi::Graphics3DImpl overrides. |
| + virtual gpu::CommandBuffer* GetCommandBuffer() OVERRIDE; |
| + virtual int32 PPB_Graphics3D_Impl::DoSwapBuffers() OVERRIDE; |
| + |
| private: |
| explicit PPB_Graphics3D_Impl(PluginInstance* instance); |
| bool Init(PP_Config3D_Dev config, |
| PP_Resource share_context, |
| const int32_t* attrib_list); |
| + bool InitRaw(PP_Config3D_Dev config, |
| + PP_Resource share_context, |
| + const int32_t* attrib_list); |
| + // Notifications received from the GPU process. |
| + void OnSwapBuffers(); |
| + void OnContextLost(); |
| + // Notifications sent to plugin. |
| + void SendContextLost(); |
| + |
| + // True if context is bound to instance. |
| + bool bound_to_instance_; |
| + // True when waiting for compositor to commit our backing texture. |
| + bool commit_pending_; |
| + // PluginDelegate's 3D Context. Responsible for providing the command buffer. |
| + scoped_ptr<PluginDelegate::PlatformContext3D> platform_context_; |
| + base::ScopedCallbackFactory<PPB_Graphics3D_Impl> callback_factory_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(PPB_Graphics3D_Impl); |
| }; |
| @@ -43,4 +95,3 @@ |
| } // namespace webkit |
| #endif // WEBKIT_PLUGINS_PPAPI_PPB_GRAPHICS_3D_IMPL_H_ |
| - |