Index: content/renderer/media/android/stream_texture_factory_android_impl.cc |
diff --git a/content/renderer/media/android/stream_texture_factory_android_impl.cc b/content/renderer/media/android/stream_texture_factory_android_impl.cc |
index 3b421ca04ef76b23f7c62fb03eb715e173cb6210..cdd5345e9b3872cc61ca83d8307f4759690d6bb5 100644 |
--- a/content/renderer/media/android/stream_texture_factory_android_impl.cc |
+++ b/content/renderer/media/android/stream_texture_factory_android_impl.cc |
@@ -4,10 +4,11 @@ |
#include "content/renderer/media/android/stream_texture_factory_android_impl.h" |
+#include "cc/output/context_provider.h" |
#include "content/common/gpu/client/gpu_channel_host.h" |
#include "content/common/gpu/gpu_messages.h" |
#include "content/renderer/gpu/stream_texture_host_android.h" |
-#include "third_party/WebKit/public/platform/WebGraphicsContext3D.h" |
+#include "gpu/command_buffer/client/gles2_interface.h" |
#include "ui/gfx/size.h" |
namespace content { |
@@ -80,11 +81,12 @@ void StreamTextureProxyImpl::OnMatrixChanged(const float matrix[16]) { |
} // namespace |
StreamTextureFactoryImpl::StreamTextureFactoryImpl( |
- blink::WebGraphicsContext3D* context, |
+ const scoped_refptr<cc::ContextProvider>& context_provider, |
GpuChannelHost* channel, |
int view_id) |
- : context_(context), channel_(channel), view_id_(view_id) { |
- DCHECK(context_); |
+ : context_provider_(context_provider), |
+ channel_(channel), |
+ view_id_(view_id) { |
DCHECK(channel); |
} |
@@ -107,29 +109,28 @@ unsigned StreamTextureFactoryImpl::CreateStreamTexture( |
unsigned* texture_id, |
gpu::Mailbox* texture_mailbox, |
unsigned* texture_mailbox_sync_point) { |
- unsigned stream_id = 0; |
- if (context_->makeContextCurrent()) { |
- *texture_id = context_->createTexture(); |
- stream_id = context_->createStreamTextureCHROMIUM(*texture_id); |
- |
- context_->genMailboxCHROMIUM(texture_mailbox->name); |
- context_->bindTexture(texture_target, *texture_id); |
- context_->produceTextureCHROMIUM(texture_target, texture_mailbox->name); |
- |
- context_->flush(); |
- *texture_mailbox_sync_point = context_->insertSyncPoint(); |
- } |
+ GLuint stream_id = 0; |
+ gpu::gles2::GLES2Interface* gl = context_provider_->ContextGL(); |
+ gl->GenTextures(1, texture_id); |
+ |
+ stream_id = gl->CreateStreamTextureCHROMIUM(*texture_id); |
+ |
+ gl->GenMailboxCHROMIUM(texture_mailbox->name); |
+ gl->BindTexture(texture_target, *texture_id); |
+ gl->ProduceTextureCHROMIUM(texture_target, texture_mailbox->name); |
+ |
+ gl->Flush(); |
+ *texture_mailbox_sync_point = gl->InsertSyncPointCHROMIUM(); |
return stream_id; |
} |
void StreamTextureFactoryImpl::DestroyStreamTexture(unsigned texture_id) { |
- if (context_->makeContextCurrent()) { |
- // TODO(sievers): Make the destroyStreamTexture implicit when the last |
- // texture referencing it is lost. |
- context_->destroyStreamTextureCHROMIUM(texture_id); |
- context_->deleteTexture(texture_id); |
- context_->flush(); |
- } |
+ gpu::gles2::GLES2Interface* gl = context_provider_->ContextGL(); |
+ // TODO(sievers): Make the DestroyStreamTexture implicit when the last |
+ // texture referencing it is lost. |
+ gl->DestroyStreamTextureCHROMIUM(texture_id); |
+ gl->DeleteTextures(1, &texture_id); |
+ gl->Flush(); |
} |
void StreamTextureFactoryImpl::SetStreamTextureSize( |
@@ -137,8 +138,8 @@ void StreamTextureFactoryImpl::SetStreamTextureSize( |
channel_->Send(new GpuChannelMsg_SetStreamTextureSize(stream_id, size)); |
} |
-blink::WebGraphicsContext3D* StreamTextureFactoryImpl::Context3d() { |
- return context_; |
+gpu::gles2::GLES2Interface* StreamTextureFactoryImpl::ContextGL() { |
+ return context_provider_->ContextGL(); |
} |
} // namespace content |