Index: media/filters/vpx_video_decoder.cc |
diff --git a/media/filters/vpx_video_decoder.cc b/media/filters/vpx_video_decoder.cc |
index 0b92a7d8459c4e152bbd7261b56ce7dcc1c32ffe..baab01741ab4a49bd3a02df5e400b0b80bbf0d12 100644 |
--- a/media/filters/vpx_video_decoder.cc |
+++ b/media/filters/vpx_video_decoder.cc |
@@ -58,6 +58,7 @@ static int GetThreadCount() { |
VpxVideoDecoder::VpxVideoDecoder( |
const scoped_refptr<base::MessageLoopProxy>& message_loop) |
: message_loop_(message_loop), |
+ weak_factory_(this), |
state_(kUninitialized), |
vpx_codec_(NULL) { |
} |
@@ -73,6 +74,7 @@ void VpxVideoDecoder::Initialize( |
const StatisticsCB& statistics_cb) { |
DCHECK(message_loop_->BelongsToCurrentThread()); |
DCHECK(!demuxer_stream_) << "Already initialized."; |
+ weak_this_ = weak_factory_.GetWeakPtr(); |
if (!stream) { |
status_cb.Run(PIPELINE_ERROR_DECODE); |
@@ -182,7 +184,7 @@ void VpxVideoDecoder::ReadFromDemuxerStream() { |
DCHECK(!read_cb_.is_null()); |
demuxer_stream_->Read(base::Bind( |
- &VpxVideoDecoder::DoDecryptOrDecodeBuffer, this)); |
+ &VpxVideoDecoder::DoDecryptOrDecodeBuffer, weak_this_)); |
} |
void VpxVideoDecoder::DoDecryptOrDecodeBuffer( |