Index: ppapi/proxy/video_decoder_resource.cc |
diff --git a/ppapi/proxy/video_decoder_resource.cc b/ppapi/proxy/video_decoder_resource.cc |
index 95365e8bba8e67e29c9834a7d0c118ef122067ae..2ca5ce2de8e015d5625f9dfa280424c446884f84 100644 |
--- a/ppapi/proxy/video_decoder_resource.cc |
+++ b/ppapi/proxy/video_decoder_resource.cc |
@@ -7,6 +7,7 @@ |
#include "base/bind.h" |
#include "gpu/command_buffer/client/gles2_cmd_helper.h" |
#include "gpu/command_buffer/client/gles2_implementation.h" |
+#include "gpu/command_buffer/common/mailbox.h" |
#include "ipc/ipc_message.h" |
#include "ppapi/c/pp_errors.h" |
#include "ppapi/c/ppb_opengles2.h" |
@@ -112,7 +113,7 @@ |
enter_create.functions()->CreateGraphics3D( |
pp_instance(), graphics_context, attrib_list)); |
EnterResourceNoLock<PPB_Graphics3D_API> enter_graphics(graphics3d_.get(), |
- true); |
+ false); |
if (enter_graphics.failed()) |
return PP_ERROR_BADRESOURCE; |
@@ -332,8 +333,10 @@ |
const ResourceMessageReplyParams& params, |
uint32_t num_textures, |
const PP_Size& size, |
- uint32_t texture_target) { |
+ uint32_t texture_target, |
+ const std::vector<gpu::Mailbox>& mailboxes) { |
DCHECK(num_textures); |
+ DCHECK(mailboxes.empty() || mailboxes.size() == num_textures); |
std::vector<uint32_t> texture_ids(num_textures); |
if (gles2_impl_) { |
gles2_impl_->GenTextures(num_textures, &texture_ids.front()); |
@@ -360,6 +363,10 @@ |
GL_UNSIGNED_BYTE, |
NULL); |
} |
+ if (!mailboxes.empty()) { |
+ gles2_impl_->ProduceTextureCHROMIUM( |
+ GL_TEXTURE_2D, reinterpret_cast<const GLbyte*>(mailboxes[i].name)); |
+ } |
textures_.insert( |
std::make_pair(texture_ids[i], Texture(texture_target, size))); |