| Index: content/renderer/media/android/webmediaplayer_android.cc
|
| diff --git a/content/renderer/media/android/webmediaplayer_android.cc b/content/renderer/media/android/webmediaplayer_android.cc
|
| index af0d25b27bd433d216335118bc5fad3ad8d7f163..dccdfbd8f8827a8019058a76063b4f4cd7799829 100644
|
| --- a/content/renderer/media/android/webmediaplayer_android.cc
|
| +++ b/content/renderer/media/android/webmediaplayer_android.cc
|
| @@ -22,6 +22,7 @@
|
| #include "content/renderer/media/webmediaplayer_util.h"
|
| #include "content/renderer/render_thread_impl.h"
|
| #include "gpu/GLES2/gl2extchromium.h"
|
| +#include "gpu/command_buffer/client/gles2_interface.h"
|
| #include "grit/content_resources.h"
|
| #include "media/base/android/media_player_android.h"
|
| #include "media/base/bind_to_current_loop.h"
|
| @@ -52,6 +53,7 @@ using blink::WebSize;
|
| using blink::WebString;
|
| using blink::WebTimeRanges;
|
| using blink::WebURL;
|
| +using gpu::gles2::GLES2Interface;
|
| using media::MediaPlayerAndroid;
|
| using media::VideoFrame;
|
|
|
| @@ -181,10 +183,8 @@ WebMediaPlayerAndroid::~WebMediaPlayerAndroid() {
|
| stream_texture_factory_->DestroyStreamTexture(texture_id_);
|
|
|
| if (remote_playback_texture_id_) {
|
| - blink::WebGraphicsContext3D* context =
|
| - stream_texture_factory_->Context3d();
|
| - if (context->makeContextCurrent())
|
| - context->deleteTexture(remote_playback_texture_id_);
|
| + stream_texture_factory_->ContextGL()->
|
| + DeleteTextures(1, &remote_playback_texture_id_);
|
| }
|
|
|
| if (base::MessageLoop::current())
|
| @@ -929,9 +929,6 @@ void WebMediaPlayerAndroid::DrawRemotePlaybackIcon() {
|
| DCHECK(main_thread_checker_.CalledOnValidThread());
|
| if (!video_weblayer_)
|
| return;
|
| - blink::WebGraphicsContext3D* context = stream_texture_factory_->Context3d();
|
| - if (!context->makeContextCurrent())
|
| - return;
|
|
|
| // TODO(johnme): Should redraw this frame if the layer bounds change; but
|
| // there seems no easy way to listen for the layer resizing (as opposed to
|
| @@ -978,33 +975,35 @@ void WebMediaPlayerAndroid::DrawRemotePlaybackIcon() {
|
| canvas.drawBitmapRectToRect(
|
| *icon_bitmap, NULL /* src */, icon_rect /* dest */, &paint);
|
|
|
| + GLES2Interface* gl = stream_texture_factory_->ContextGL();
|
| +
|
| if (!remote_playback_texture_id_)
|
| - remote_playback_texture_id_ = context->createTexture();
|
| - unsigned texture_target = GL_TEXTURE_2D;
|
| - context->bindTexture(texture_target, remote_playback_texture_id_);
|
| - context->texParameteri(texture_target, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
| - context->texParameteri(texture_target, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
| - context->texParameteri(texture_target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
| - context->texParameteri(texture_target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
| + gl->GenTextures(1, &remote_playback_texture_id_);
|
| + GLuint texture_target = GL_TEXTURE_2D;
|
| + gl->BindTexture(texture_target, remote_playback_texture_id_);
|
| + gl->TexParameteri(texture_target, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
| + gl->TexParameteri(texture_target, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
| + gl->TexParameteri(texture_target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
| + gl->TexParameteri(texture_target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
|
|
| {
|
| SkAutoLockPixels lock(bitmap);
|
| - context->texImage2D(texture_target,
|
| - 0 /* level */,
|
| - GL_RGBA /* internalformat */,
|
| - bitmap.width(),
|
| - bitmap.height(),
|
| - 0 /* border */,
|
| - GL_RGBA /* format */,
|
| - GL_UNSIGNED_BYTE /* type */,
|
| - bitmap.getPixels());
|
| + gl->TexImage2D(texture_target,
|
| + 0 /* level */,
|
| + GL_RGBA /* internalformat */,
|
| + bitmap.width(),
|
| + bitmap.height(),
|
| + 0 /* border */,
|
| + GL_RGBA /* format */,
|
| + GL_UNSIGNED_BYTE /* type */,
|
| + bitmap.getPixels());
|
| }
|
|
|
| gpu::Mailbox texture_mailbox;
|
| - context->genMailboxCHROMIUM(texture_mailbox.name);
|
| - context->produceTextureCHROMIUM(texture_target, texture_mailbox.name);
|
| - context->flush();
|
| - unsigned texture_mailbox_sync_point = context->insertSyncPoint();
|
| + gl->GenMailboxCHROMIUM(texture_mailbox.name);
|
| + gl->ProduceTextureCHROMIUM(texture_target, texture_mailbox.name);
|
| + gl->Flush();
|
| + GLuint texture_mailbox_sync_point = gl->InsertSyncPointCHROMIUM();
|
|
|
| scoped_refptr<VideoFrame> new_frame = VideoFrame::WrapNativeTexture(
|
| make_scoped_ptr(new VideoFrame::MailboxHolder(
|
| @@ -1444,12 +1443,11 @@ void WebMediaPlayerAndroid::DoReleaseRemotePlaybackTexture(uint32 sync_point) {
|
| DCHECK(main_thread_checker_.CalledOnValidThread());
|
| DCHECK(remote_playback_texture_id_);
|
|
|
| - blink::WebGraphicsContext3D* context =
|
| - stream_texture_factory_->Context3d();
|
| + GLES2Interface* gl = stream_texture_factory_->ContextGL();
|
|
|
| if (sync_point)
|
| - context->waitSyncPoint(sync_point);
|
| - context->deleteTexture(remote_playback_texture_id_);
|
| + gl->WaitSyncPointCHROMIUM(sync_point);
|
| + gl->DeleteTextures(1, &remote_playback_texture_id_);
|
| remote_playback_texture_id_ = 0;
|
| }
|
|
|
|
|