| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "webkit/plugins/ppapi/ppb_graphics_3d_impl.h" | 5 #include "webkit/plugins/ppapi/ppb_graphics_3d_impl.h" |
| 6 | 6 |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "gpu/command_buffer/client/gles2_implementation.h" | 8 #include "gpu/command_buffer/client/gles2_implementation.h" |
| 9 #include "webkit/plugins/ppapi/plugin_module.h" | 9 #include "webkit/plugins/ppapi/plugin_module.h" |
| 10 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" | 10 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 s.generation | 47 s.generation |
| 48 }; | 48 }; |
| 49 return state; | 49 return state; |
| 50 } | 50 } |
| 51 } // namespace. | 51 } // namespace. |
| 52 | 52 |
| 53 PPB_Graphics3D_Impl::PPB_Graphics3D_Impl(PP_Instance instance) | 53 PPB_Graphics3D_Impl::PPB_Graphics3D_Impl(PP_Instance instance) |
| 54 : Resource(instance), | 54 : Resource(instance), |
| 55 bound_to_instance_(false), | 55 bound_to_instance_(false), |
| 56 commit_pending_(false), | 56 commit_pending_(false), |
| 57 callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { | 57 callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), |
| 58 method_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
| 58 } | 59 } |
| 59 | 60 |
| 60 PPB_Graphics3D_Impl::~PPB_Graphics3D_Impl() { | 61 PPB_Graphics3D_Impl::~PPB_Graphics3D_Impl() { |
| 61 DestroyGLES2Impl(); | 62 DestroyGLES2Impl(); |
| 62 } | 63 } |
| 63 | 64 |
| 64 // static | 65 // static |
| 65 PP_Resource PPB_Graphics3D_Impl::Create(PP_Instance instance, | 66 PP_Resource PPB_Graphics3D_Impl::Create(PP_Instance instance, |
| 66 PP_Resource share_context, | 67 PP_Resource share_context, |
| 67 const int32_t* attrib_list) { | 68 const int32_t* attrib_list) { |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 return platform_context_->GetCommandBuffer(); | 158 return platform_context_->GetCommandBuffer(); |
| 158 } | 159 } |
| 159 | 160 |
| 160 int32 PPB_Graphics3D_Impl::DoSwapBuffers() { | 161 int32 PPB_Graphics3D_Impl::DoSwapBuffers() { |
| 161 // We do not have a GLES2 implementation when using an OOP proxy. | 162 // We do not have a GLES2 implementation when using an OOP proxy. |
| 162 // The plugin-side proxy is responsible for adding the SwapBuffers command | 163 // The plugin-side proxy is responsible for adding the SwapBuffers command |
| 163 // to the command buffer in that case. | 164 // to the command buffer in that case. |
| 164 if (gles2_impl()) | 165 if (gles2_impl()) |
| 165 gles2_impl()->SwapBuffers(); | 166 gles2_impl()->SwapBuffers(); |
| 166 | 167 |
| 168 platform_context_->Echo(method_factory_.NewRunnableMethod( |
| 169 &PPB_Graphics3D_Impl::OnSwapBuffers)); |
| 170 |
| 167 return PP_OK_COMPLETIONPENDING; | 171 return PP_OK_COMPLETIONPENDING; |
| 168 } | 172 } |
| 169 | 173 |
| 170 bool PPB_Graphics3D_Impl::Init(PP_Resource share_context, | 174 bool PPB_Graphics3D_Impl::Init(PP_Resource share_context, |
| 171 const int32_t* attrib_list) { | 175 const int32_t* attrib_list) { |
| 172 if (!InitRaw(share_context, attrib_list)) | 176 if (!InitRaw(share_context, attrib_list)) |
| 173 return false; | 177 return false; |
| 174 | 178 |
| 175 gpu::CommandBuffer* command_buffer = GetCommandBuffer(); | 179 gpu::CommandBuffer* command_buffer = GetCommandBuffer(); |
| 176 if (!command_buffer->Initialize(kCommandBufferSize)) | 180 if (!command_buffer->Initialize(kCommandBufferSize)) |
| (...skipping 15 matching lines...) Expand all Loading... |
| 192 | 196 |
| 193 platform_context_.reset(plugin_instance->CreateContext3D()); | 197 platform_context_.reset(plugin_instance->CreateContext3D()); |
| 194 if (!platform_context_.get()) | 198 if (!platform_context_.get()) |
| 195 return false; | 199 return false; |
| 196 | 200 |
| 197 if (!platform_context_->Init(attrib_list)) | 201 if (!platform_context_->Init(attrib_list)) |
| 198 return false; | 202 return false; |
| 199 | 203 |
| 200 platform_context_->SetContextLostCallback( | 204 platform_context_->SetContextLostCallback( |
| 201 callback_factory_.NewCallback(&PPB_Graphics3D_Impl::OnContextLost)); | 205 callback_factory_.NewCallback(&PPB_Graphics3D_Impl::OnContextLost)); |
| 202 platform_context_->SetSwapBuffersCallback( | |
| 203 callback_factory_.NewCallback(&PPB_Graphics3D_Impl::OnSwapBuffers)); | |
| 204 return true; | 206 return true; |
| 205 } | 207 } |
| 206 | 208 |
| 207 void PPB_Graphics3D_Impl::OnSwapBuffers() { | 209 void PPB_Graphics3D_Impl::OnSwapBuffers() { |
| 208 if (bound_to_instance_) { | 210 if (bound_to_instance_) { |
| 209 // If we are bound to the instance, we need to ask the compositor | 211 // If we are bound to the instance, we need to ask the compositor |
| 210 // to commit our backing texture so that the graphics appears on the page. | 212 // to commit our backing texture so that the graphics appears on the page. |
| 211 // When the backing texture will be committed we get notified via | 213 // When the backing texture will be committed we get notified via |
| 212 // ViewFlushedPaint(). | 214 // ViewFlushedPaint(). |
| 213 // | 215 // |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 const PPP_Graphics3D_Dev* ppp_graphics_3d = | 248 const PPP_Graphics3D_Dev* ppp_graphics_3d = |
| 247 static_cast<const PPP_Graphics3D_Dev*>( | 249 static_cast<const PPP_Graphics3D_Dev*>( |
| 248 instance->module()->GetPluginInterface( | 250 instance->module()->GetPluginInterface( |
| 249 PPP_GRAPHICS_3D_DEV_INTERFACE)); | 251 PPP_GRAPHICS_3D_DEV_INTERFACE)); |
| 250 if (ppp_graphics_3d) | 252 if (ppp_graphics_3d) |
| 251 ppp_graphics_3d->Graphics3DContextLost(pp_instance()); | 253 ppp_graphics_3d->Graphics3DContextLost(pp_instance()); |
| 252 } | 254 } |
| 253 | 255 |
| 254 } // namespace ppapi | 256 } // namespace ppapi |
| 255 } // namespace webkit | 257 } // namespace webkit |
| OLD | NEW |