Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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_surface_3d_impl.h" | 5 #include "webkit/plugins/ppapi/ppb_surface_3d_impl.h" |
| 6 | 6 |
| 7 #include "gpu/command_buffer/client/gles2_implementation.h" | |
| 7 #include "gpu/command_buffer/common/command_buffer.h" | 8 #include "gpu/command_buffer/common/command_buffer.h" |
| 8 #include "ppapi/c/dev/ppb_graphics_3d_dev.h" | 9 #include "ppapi/c/dev/ppb_graphics_3d_dev.h" |
| 9 #include "webkit/plugins/ppapi/common.h" | 10 #include "webkit/plugins/ppapi/common.h" |
| 10 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" | 11 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" |
| 11 | 12 |
| 12 namespace webkit { | 13 namespace webkit { |
| 13 namespace ppapi { | 14 namespace ppapi { |
| 14 | 15 |
| 15 namespace { | 16 namespace { |
| 16 | 17 |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 98 if (context == context_) | 99 if (context == context_) |
| 99 return true; | 100 return true; |
| 100 | 101 |
| 101 // Unbind from the current context. | 102 // Unbind from the current context. |
| 102 if (context_) { | 103 if (context_) { |
| 103 context_->SetSwapBuffersCallback(NULL); | 104 context_->SetSwapBuffersCallback(NULL); |
| 104 } | 105 } |
| 105 if (context) { | 106 if (context) { |
| 106 // Resize the backing texture to the size of the instance when it is bound. | 107 // Resize the backing texture to the size of the instance when it is bound. |
| 107 // TODO(alokp): This should be the responsibility of plugins. | 108 // TODO(alokp): This should be the responsibility of plugins. |
| 108 context->ResizeBackingTexture(instance()->position().size()); | 109 const gfx::Size& size = instance()->position().size(); |
|
neb
2011/01/25 19:16:06
I'm wondering if we can split this right now into
Antoine Labour
2011/01/25 19:32:24
Right, I have a follow up CL where the command buf
| |
| 109 | 110 context->GetGLES2Implementation()->ResizeCHROMIUM( |
|
apatrick
2011/01/25 18:22:48
The issue with calling this concurrently with GL c
Antoine Labour
2011/01/25 19:32:24
In truth, none of the pepper calls are thread-safe
| |
| 110 // This is a temporary hack. The SwapBuffers is issued to force the resize | 111 size.width(), size.height()); |
| 111 // to take place before any subsequent rendering. This might lead to a | |
| 112 // partially rendered frame being displayed. It is also not thread safe | |
| 113 // since the SwapBuffers is written to the command buffer and that command | |
| 114 // buffer might be written to by another thread. | |
| 115 // TODO(apatrick): Figure out the semantics of binding and resizing. | |
| 116 context->SwapBuffers(); | |
| 117 | 112 |
| 118 context->SetSwapBuffersCallback( | 113 context->SetSwapBuffersCallback( |
| 119 NewCallback(this, &PPB_Surface3D_Impl::OnSwapBuffers)); | 114 NewCallback(this, &PPB_Surface3D_Impl::OnSwapBuffers)); |
| 120 } | 115 } |
| 121 context_ = context; | 116 context_ = context; |
| 122 return true; | 117 return true; |
| 123 } | 118 } |
| 124 | 119 |
| 125 bool PPB_Surface3D_Impl::SwapBuffers(PP_CompletionCallback callback) { | 120 bool PPB_Surface3D_Impl::SwapBuffers(PP_CompletionCallback callback) { |
| 126 if (!context_) | 121 if (!context_) |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 158 } | 153 } |
| 159 | 154 |
| 160 void PPB_Surface3D_Impl::OnSwapBuffers() { | 155 void PPB_Surface3D_Impl::OnSwapBuffers() { |
| 161 if (bound_to_instance_) | 156 if (bound_to_instance_) |
| 162 instance()->CommitBackingTexture(); | 157 instance()->CommitBackingTexture(); |
| 163 } | 158 } |
| 164 | 159 |
| 165 } // namespace ppapi | 160 } // namespace ppapi |
| 166 } // namespace webkit | 161 } // namespace webkit |
| 167 | 162 |
| OLD | NEW |