| Index: content/common/gpu/media/omx_video_decode_accelerator.cc
|
| diff --git a/content/common/gpu/media/omx_video_decode_accelerator.cc b/content/common/gpu/media/omx_video_decode_accelerator.cc
|
| index de862197752cc2d491d7c388b15a5266ccc374a3..956742d7eca9ae5154efd2f92414462acbb9f0f4 100644
|
| --- a/content/common/gpu/media/omx_video_decode_accelerator.cc
|
| +++ b/content/common/gpu/media/omx_video_decode_accelerator.cc
|
| @@ -91,7 +91,8 @@ bool OmxVideoDecodeAccelerator::pre_sandbox_init_done_ = false;
|
|
|
| OmxVideoDecodeAccelerator::OmxVideoDecodeAccelerator(
|
| EGLDisplay egl_display, EGLContext egl_context,
|
| - media::VideoDecodeAccelerator::Client* client)
|
| + media::VideoDecodeAccelerator::Client* client,
|
| + const base::Callback<bool(void)>& make_context_current)
|
| : message_loop_(MessageLoop::current()),
|
| component_handle_(NULL),
|
| weak_this_(base::AsWeakPtr(this)),
|
| @@ -106,6 +107,7 @@ OmxVideoDecodeAccelerator::OmxVideoDecodeAccelerator(
|
| output_buffers_at_component_(0),
|
| egl_display_(egl_display),
|
| egl_context_(egl_context),
|
| + make_context_current_(make_context_current),
|
| client_(client),
|
| codec_(UNKNOWN),
|
| h264_profile_(OMX_VIDEO_AVCProfileMax),
|
| @@ -334,6 +336,9 @@ void OmxVideoDecodeAccelerator::AssignPictureBuffers(
|
| DCHECK_EQ(fake_output_buffers_.size(), 0U);
|
| DCHECK_EQ(pictures_.size(), 0U);
|
|
|
| + if (!make_context_current_.Run())
|
| + return;
|
| +
|
| for (size_t i = 0; i < buffers.size(); ++i) {
|
| EGLImageKHR egl_image =
|
| texture_to_egl_image_translator_->TranslateToEglImage(
|
| @@ -707,6 +712,10 @@ void OmxVideoDecodeAccelerator::FreeOutputBuffers() {
|
| DCHECK_EQ(message_loop_, MessageLoop::current());
|
| // Calls to OMX to free buffers.
|
| OMX_ERRORTYPE result;
|
| +
|
| + if (!make_context_current_.Run())
|
| + return;
|
| +
|
| for (OutputPictureById::iterator it = pictures_.begin();
|
| it != pictures_.end(); ++it) {
|
| OMX_BUFFERHEADERTYPE* omx_buffer = it->second.omx_buffer_header;
|
|
|