Chromium Code Reviews| Index: content/common/gpu/media/vaapi_drm_picture.cc |
| diff --git a/content/common/gpu/media/vaapi_drm_picture.cc b/content/common/gpu/media/vaapi_drm_picture.cc |
| index d344a1b5138a97c986e13709283e2bce9fb1e18b..94f50dd5783b3a4cc0babfea11c813721039da19 100644 |
| --- a/content/common/gpu/media/vaapi_drm_picture.cc |
| +++ b/content/common/gpu/media/vaapi_drm_picture.cc |
| @@ -20,22 +20,21 @@ |
| namespace content { |
| VaapiDrmPicture::VaapiDrmPicture( |
| - VaapiWrapper* vaapi_wrapper, |
| + scoped_refptr<VaapiWrapper> vaapi_wrapper, |
| const base::Callback<bool(void)>& make_context_current, |
| int32 picture_buffer_id, |
| uint32 texture_id, |
| const gfx::Size& size) |
| : VaapiPicture(picture_buffer_id, texture_id, size), |
| vaapi_wrapper_(vaapi_wrapper), |
| - make_context_current_(make_context_current), |
| - weak_this_factory_(this) { |
| -} |
| + make_context_current_(make_context_current) {} |
| VaapiDrmPicture::~VaapiDrmPicture() { |
| if (gl_image_ && make_context_current_.Run()) { |
| gl_image_->ReleaseTexImage(GL_TEXTURE_EXTERNAL_OES); |
| gl_image_->Destroy(true); |
| + LOG(WARNING) << "qxie2:" << __FUNCTION__ << ", gl_image:" << gl_image_; |
| DCHECK_EQ(glGetError(), static_cast<GLenum>(GL_NO_ERROR)); |
| } |
| } |
| @@ -116,11 +115,8 @@ bool VaapiDrmPicture::Initialize() { |
| return false; |
| } |
| - // Weak pointers can only bind to methods without return values, |
| - // hence we cannot bind ScalePixmap here. Instead we use a |
| - // static function to solve this problem. |
| - pixmap_->SetScalingCallback(base::Bind(&VaapiDrmPicture::CallScalePixmap, |
| - weak_this_factory_.GetWeakPtr())); |
| + scoped_refptr<VaapiDrmPicture> ref = this; |
|
Pawel Osciak
2015/11/16 04:24:35
This shouldn't be required. You should be able to
william.xie1
2015/11/16 08:07:25
Done.
|
| + pixmap_->SetScalingCallback(base::Bind(&VaapiDrmPicture::ScalePixmap, ref)); |
| if (!make_context_current_.Run()) |
| return false; |
| @@ -147,18 +143,6 @@ bool VaapiDrmPicture::DownloadFromSurface( |
| return vaapi_wrapper_->BlitSurface(va_surface, va_surface_); |
| } |
| -// static |
| -scoped_refptr<ui::NativePixmap> VaapiDrmPicture::CallScalePixmap( |
| - base::WeakPtr<VaapiDrmPicture> weak_ptr, |
| - gfx::Size new_size) { |
| - if (!weak_ptr.get()) { |
| - LOG(ERROR) << "Failed scaling NativePixmap as scaling " |
| - "unit(VaapiDrmPicture) is deleted"; |
| - return nullptr; |
| - } |
| - return weak_ptr->ScalePixmap(new_size); |
| -} |
| - |
| scoped_refptr<ui::NativePixmap> VaapiDrmPicture::ScalePixmap( |
| gfx::Size new_size) { |
| if (!scaled_va_surface_.get() || scaled_va_surface_->size() != new_size) { |