Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(859)

Unified Diff: media/filters/ffmpeg_demuxer.cc

Issue 193303002: WeakPtr destruction order cleanup: media edition. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/filters/ffmpeg_demuxer.h ('k') | media/filters/ffmpeg_video_decoder.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/ffmpeg_demuxer.cc
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
index c38d57c4fc017d145182a50ca4c9da019ba3e1bd..5e3409d0427915452761f11fa2bde21cedbf393b 100644
--- a/media/filters/ffmpeg_demuxer.cc
+++ b/media/filters/ffmpeg_demuxer.cc
@@ -369,7 +369,6 @@ FFmpegDemuxer::FFmpegDemuxer(
const scoped_refptr<MediaLog>& media_log)
: host_(NULL),
task_runner_(task_runner),
- weak_factory_(this),
blocking_thread_("FFmpegDemuxer"),
pending_read_(false),
pending_seek_(false),
@@ -380,7 +379,8 @@ FFmpegDemuxer::FFmpegDemuxer(
audio_disabled_(false),
text_enabled_(false),
duration_known_(false),
- need_key_cb_(need_key_cb) {
+ need_key_cb_(need_key_cb),
+ weak_factory_(this) {
DCHECK(task_runner_.get());
DCHECK(data_source_);
}
@@ -390,9 +390,10 @@ FFmpegDemuxer::~FFmpegDemuxer() {}
void FFmpegDemuxer::Stop(const base::Closure& callback) {
DCHECK(task_runner_->BelongsToCurrentThread());
url_protocol_->Abort();
- data_source_->Stop(BindToCurrentLoop(base::Bind(
- &FFmpegDemuxer::OnDataSourceStopped, weak_this_,
- BindToCurrentLoop(callback))));
+ data_source_->Stop(
+ BindToCurrentLoop(base::Bind(&FFmpegDemuxer::OnDataSourceStopped,
+ weak_factory_.GetWeakPtr(),
+ BindToCurrentLoop(callback))));
data_source_ = NULL;
}
@@ -419,7 +420,8 @@ void FFmpegDemuxer::Seek(base::TimeDelta time, const PipelineStatusCB& cb) {
-1,
time.InMicroseconds(),
flags),
- base::Bind(&FFmpegDemuxer::OnSeekFrameDone, weak_this_, cb));
+ base::Bind(
+ &FFmpegDemuxer::OnSeekFrameDone, weak_factory_.GetWeakPtr(), cb));
}
void FFmpegDemuxer::OnAudioRendererDisabled() {
@@ -438,7 +440,6 @@ void FFmpegDemuxer::Initialize(DemuxerHost* host,
bool enable_text_tracks) {
DCHECK(task_runner_->BelongsToCurrentThread());
host_ = host;
- weak_this_ = weak_factory_.GetWeakPtr();
text_enabled_ = enable_text_tracks;
// TODO(scherkus): DataSource should have a host by this point,
@@ -461,7 +462,9 @@ void FFmpegDemuxer::Initialize(DemuxerHost* host,
blocking_thread_.message_loop_proxy().get(),
FROM_HERE,
base::Bind(&FFmpegGlue::OpenContext, base::Unretained(glue_.get())),
- base::Bind(&FFmpegDemuxer::OnOpenContextDone, weak_this_, status_cb));
+ base::Bind(&FFmpegDemuxer::OnOpenContextDone,
+ weak_factory_.GetWeakPtr(),
+ status_cb));
}
DemuxerStream* FFmpegDemuxer::GetStream(DemuxerStream::Type type) {
@@ -560,7 +563,9 @@ void FFmpegDemuxer::OnOpenContextDone(const PipelineStatusCB& status_cb,
base::Bind(&avformat_find_stream_info,
glue_->format_context(),
static_cast<AVDictionary**>(NULL)),
- base::Bind(&FFmpegDemuxer::OnFindStreamInfoDone, weak_this_, status_cb));
+ base::Bind(&FFmpegDemuxer::OnFindStreamInfoDone,
+ weak_factory_.GetWeakPtr(),
+ status_cb));
}
void FFmpegDemuxer::OnFindStreamInfoDone(const PipelineStatusCB& status_cb,
@@ -793,8 +798,9 @@ void FFmpegDemuxer::ReadFrameIfNeeded() {
blocking_thread_.message_loop_proxy().get(),
FROM_HERE,
base::Bind(&av_read_frame, glue_->format_context(), packet_ptr),
- base::Bind(
- &FFmpegDemuxer::OnReadFrameDone, weak_this_, base::Passed(&packet)));
+ base::Bind(&FFmpegDemuxer::OnReadFrameDone,
+ weak_factory_.GetWeakPtr(),
+ base::Passed(&packet)));
}
void FFmpegDemuxer::OnReadFrameDone(ScopedAVPacket packet, int result) {
« no previous file with comments | « media/filters/ffmpeg_demuxer.h ('k') | media/filters/ffmpeg_video_decoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698