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) { |