Index: content/renderer/media/buffered_data_source.cc |
diff --git a/content/renderer/media/buffered_data_source.cc b/content/renderer/media/buffered_data_source.cc |
index 1992b706ad457222507b6ee84e1ffb6c8057bc34..f14bf493e57b4204e1c45a1b6605064b2e136565 100644 |
--- a/content/renderer/media/buffered_data_source.cc |
+++ b/content/renderer/media/buffered_data_source.cc |
@@ -99,7 +99,6 @@ BufferedDataSource::BufferedDataSource( |
downloading_cb_(downloading_cb), |
weak_factory_(this) { |
DCHECK(!downloading_cb_.is_null()); |
- weak_this_ = weak_factory_.GetWeakPtr(); |
} |
BufferedDataSource::~BufferedDataSource() {} |
@@ -159,10 +158,11 @@ void BufferedDataSource::Initialize( |
assume_fully_buffered_ = true; |
} |
+ base::WeakPtr<BufferedDataSource> weak_this = weak_factory_.GetWeakPtr(); |
loader_->Start( |
- base::Bind(&BufferedDataSource::StartCallback, weak_this_), |
- base::Bind(&BufferedDataSource::LoadingStateChangedCallback, weak_this_), |
- base::Bind(&BufferedDataSource::ProgressCallback, weak_this_), |
+ base::Bind(&BufferedDataSource::StartCallback, weak_this), |
+ base::Bind(&BufferedDataSource::LoadingStateChangedCallback, weak_this), |
+ base::Bind(&BufferedDataSource::ProgressCallback, weak_this), |
frame_); |
} |
@@ -223,13 +223,16 @@ void BufferedDataSource::Stop(const base::Closure& closure) { |
} |
closure.Run(); |
- render_loop_->PostTask(FROM_HERE, |
- base::Bind(&BufferedDataSource::StopLoader, weak_this_)); |
+ render_loop_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&BufferedDataSource::StopLoader, weak_factory_.GetWeakPtr())); |
} |
void BufferedDataSource::SetBitrate(int bitrate) { |
- render_loop_->PostTask(FROM_HERE, base::Bind( |
- &BufferedDataSource::SetBitrateTask, weak_this_, bitrate)); |
+ render_loop_->PostTask(FROM_HERE, |
+ base::Bind(&BufferedDataSource::SetBitrateTask, |
+ weak_factory_.GetWeakPtr(), |
+ bitrate)); |
} |
void BufferedDataSource::Read( |
@@ -250,8 +253,9 @@ void BufferedDataSource::Read( |
read_op_.reset(new ReadOperation(position, size, data, read_cb)); |
} |
- render_loop_->PostTask(FROM_HERE, base::Bind( |
- &BufferedDataSource::ReadTask, weak_this_)); |
+ render_loop_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&BufferedDataSource::ReadTask, weak_factory_.GetWeakPtr())); |
} |
bool BufferedDataSource::GetSize(int64* size_out) { |
@@ -326,9 +330,11 @@ void BufferedDataSource::ReadInternal() { |
} |
// Perform the actual read with BufferedResourceLoader. |
- loader_->Read( |
- position, size, intermediate_read_buffer_.get(), |
- base::Bind(&BufferedDataSource::ReadCallback, weak_this_)); |
+ loader_->Read(position, |
+ size, |
+ intermediate_read_buffer_.get(), |
+ base::Bind(&BufferedDataSource::ReadCallback, |
+ weak_factory_.GetWeakPtr())); |
} |
@@ -431,11 +437,13 @@ void BufferedDataSource::ReadCallback( |
// end of the resource. |
loader_.reset(CreateResourceLoader( |
read_op_->position(), kPositionNotSpecified)); |
+ |
+ base::WeakPtr<BufferedDataSource> weak_this = weak_factory_.GetWeakPtr(); |
loader_->Start( |
- base::Bind(&BufferedDataSource::PartialReadStartCallback, weak_this_), |
+ base::Bind(&BufferedDataSource::PartialReadStartCallback, weak_this), |
base::Bind(&BufferedDataSource::LoadingStateChangedCallback, |
- weak_this_), |
- base::Bind(&BufferedDataSource::ProgressCallback, weak_this_), |
+ weak_this), |
+ base::Bind(&BufferedDataSource::ProgressCallback, weak_this), |
frame_); |
return; |
} |