Index: content/renderer/media/rtc_video_decoder.cc |
diff --git a/content/renderer/media/rtc_video_decoder.cc b/content/renderer/media/rtc_video_decoder.cc |
index 7102350771d74748fbf72dec7fc9b59ec1e5913d..313cba747f040ddd075b80151c8c5b1f796eb994 100644 |
--- a/content/renderer/media/rtc_video_decoder.cc |
+++ b/content/renderer/media/rtc_video_decoder.cc |
@@ -87,7 +87,6 @@ RTCVideoDecoder::RTCVideoDecoder( |
reset_bitstream_buffer_id_(ID_INVALID), |
weak_factory_(this) { |
DCHECK(!vda_task_runner_->BelongsToCurrentThread()); |
- weak_this_ = weak_factory_.GetWeakPtr(); |
} |
RTCVideoDecoder::~RTCVideoDecoder() { |
@@ -163,7 +162,7 @@ int32_t RTCVideoDecoder::InitDecode(const webrtc::VideoCodec* codecSettings, |
if (available_shm_segments_.size() == 0) { |
vda_task_runner_->PostTask(FROM_HERE, |
base::Bind(&RTCVideoDecoder::CreateSHM, |
- weak_this_, |
+ weak_factory_.GetWeakPtr(), |
kMaxInFlightDecodes, |
kSharedMemorySegmentBytes)); |
} |
@@ -251,8 +250,9 @@ int32_t RTCVideoDecoder::Decode( |
} |
SaveToDecodeBuffers_Locked(inputImage, shm_buffer.Pass(), buffer_data); |
- vda_task_runner_->PostTask( |
- FROM_HERE, base::Bind(&RTCVideoDecoder::RequestBufferDecode, weak_this_)); |
+ vda_task_runner_->PostTask(FROM_HERE, |
+ base::Bind(&RTCVideoDecoder::RequestBufferDecode, |
+ weak_factory_.GetWeakPtr())); |
return WEBRTC_VIDEO_CODEC_OK; |
} |
@@ -285,8 +285,9 @@ int32_t RTCVideoDecoder::Reset() { |
// If VDA is already resetting, no need to request the reset again. |
if (state_ != RESETTING) { |
state_ = RESETTING; |
- vda_task_runner_->PostTask( |
- FROM_HERE, base::Bind(&RTCVideoDecoder::ResetInternal, weak_this_)); |
+ vda_task_runner_->PostTask(FROM_HERE, |
+ base::Bind(&RTCVideoDecoder::ResetInternal, |
+ weak_factory_.GetWeakPtr())); |
} |
return WEBRTC_VIDEO_CODEC_OK; |
} |
@@ -441,7 +442,7 @@ scoped_refptr<media::VideoFrame> RTCVideoDecoder::CreateVideoFrame( |
make_scoped_ptr(new gpu::MailboxHolder( |
pb.texture_mailbox(), decoder_texture_target_, 0)), |
media::BindToCurrentLoop(base::Bind(&RTCVideoDecoder::ReusePictureBuffer, |
- weak_this_, |
+ weak_factory_.GetWeakPtr(), |
picture.picture_buffer_id())), |
pb.size(), |
visible_rect, |
@@ -718,9 +719,11 @@ scoped_ptr<RTCVideoDecoder::SHMBuffer> RTCVideoDecoder::GetSHM_Locked( |
// queue is almost empty. |
if (num_shm_buffers_ < kMaxNumSharedMemorySegments && |
(ret == NULL || available_shm_segments_.size() <= 1)) { |
- vda_task_runner_->PostTask( |
- FROM_HERE, |
- base::Bind(&RTCVideoDecoder::CreateSHM, weak_this_, 1, min_size)); |
+ vda_task_runner_->PostTask(FROM_HERE, |
+ base::Bind(&RTCVideoDecoder::CreateSHM, |
+ weak_factory_.GetWeakPtr(), |
+ 1, |
+ min_size)); |
} |
return scoped_ptr<SHMBuffer>(ret); |
} |