diff options
author | dmichael <dmichael@chromium.org> | 2014-12-09 12:02:47 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-12-09 20:03:17 +0000 |
commit | 284c5e97e4d17fa5c378b0f26117d1cea2fd65cc (patch) | |
tree | ad7d46990ffb80d5265fc8beb39cf6cadebb4bfc /media | |
parent | da4bb3f6153553754222f1b1f46c573a3c29aeff (diff) | |
download | chromium_src-284c5e97e4d17fa5c378b0f26117d1cea2fd65cc.zip chromium_src-284c5e97e4d17fa5c378b0f26117d1cea2fd65cc.tar.gz chromium_src-284c5e97e4d17fa5c378b0f26117d1cea2fd65cc.tar.bz2 |
Fix WeakPtrFactory ordering in media
A lot of these followed the pattern of listing WeakPtr last, which isn't
bad, but destructing WeakPtrFactory first invalidates *all* WeakPtrs it has
vended. And doing this consistently will allow us to turn on a Clang
checker (see the bug for more info).
BUG=303818
R=xhwang@chromium.org
Review URL: https://codereview.chromium.org/791633004
Cr-Commit-Position: refs/heads/master@{#307529}
Diffstat (limited to 'media')
-rw-r--r-- | media/blink/buffered_data_source.cc | 4 | ||||
-rw-r--r-- | media/blink/buffered_data_source.h | 6 | ||||
-rw-r--r-- | media/filters/decrypting_audio_decoder.h | 3 | ||||
-rw-r--r-- | media/filters/decrypting_demuxer_stream.h | 3 | ||||
-rw-r--r-- | media/filters/decrypting_video_decoder.h | 3 | ||||
-rw-r--r-- | media/filters/renderer_impl.cc | 4 | ||||
-rw-r--r-- | media/filters/renderer_impl.h | 3 | ||||
-rw-r--r-- | media/mojo/services/mojo_renderer_service.cc | 4 | ||||
-rw-r--r-- | media/mojo/services/mojo_renderer_service.h | 2 |
9 files changed, 13 insertions, 19 deletions
diff --git a/media/blink/buffered_data_source.cc b/media/blink/buffered_data_source.cc index be8d0f2..e3e12e0 100644 --- a/media/blink/buffered_data_source.cc +++ b/media/blink/buffered_data_source.cc @@ -104,8 +104,8 @@ BufferedDataSource::BufferedDataSource( media_log_(media_log), host_(host), downloading_cb_(downloading_cb), - weak_factory_(this), - weak_ptr_(weak_factory_.GetWeakPtr()) { + weak_factory_(this) { + weak_ptr_ = weak_factory_.GetWeakPtr(); DCHECK(host_); DCHECK(!downloading_cb_.is_null()); DCHECK(render_task_runner_->BelongsToCurrentThread()); diff --git a/media/blink/buffered_data_source.h b/media/blink/buffered_data_source.h index 2179867..b047c19 100644 --- a/media/blink/buffered_data_source.h +++ b/media/blink/buffered_data_source.h @@ -232,13 +232,11 @@ class MEDIA_EXPORT BufferedDataSource : public DataSource { DownloadingCB downloading_cb_; - // NOTE: Weak pointers must be invalidated before all other member variables. - base::WeakPtrFactory<BufferedDataSource> weak_factory_; - // Disallow rebinding WeakReference ownership to a different thread by keeping // a persistent reference. This avoids problems with the thread-safety of // reaching into this class from multiple threads to attain a WeakPtr. - const base::WeakPtr<BufferedDataSource> weak_ptr_; + base::WeakPtr<BufferedDataSource> weak_ptr_; + base::WeakPtrFactory<BufferedDataSource> weak_factory_; DISALLOW_COPY_AND_ASSIGN(BufferedDataSource); }; diff --git a/media/filters/decrypting_audio_decoder.h b/media/filters/decrypting_audio_decoder.h index ddb89ac..8f6fc24 100644 --- a/media/filters/decrypting_audio_decoder.h +++ b/media/filters/decrypting_audio_decoder.h @@ -117,9 +117,8 @@ class MEDIA_EXPORT DecryptingAudioDecoder : public AudioDecoder { scoped_ptr<AudioTimestampHelper> timestamp_helper_; - // NOTE: Weak pointers must be invalidated before all other member variables. - base::WeakPtrFactory<DecryptingAudioDecoder> weak_factory_; base::WeakPtr<DecryptingAudioDecoder> weak_this_; + base::WeakPtrFactory<DecryptingAudioDecoder> weak_factory_; DISALLOW_COPY_AND_ASSIGN(DecryptingAudioDecoder); }; diff --git a/media/filters/decrypting_demuxer_stream.h b/media/filters/decrypting_demuxer_stream.h index 4cf3f05..f66f9ab 100644 --- a/media/filters/decrypting_demuxer_stream.h +++ b/media/filters/decrypting_demuxer_stream.h @@ -125,9 +125,8 @@ class MEDIA_EXPORT DecryptingDemuxerStream : public DemuxerStream { // decrypting again in case the newly added key is the correct decryption key. bool key_added_while_decrypt_pending_; - // NOTE: Weak pointers must be invalidated before all other member variables. - base::WeakPtrFactory<DecryptingDemuxerStream> weak_factory_; base::WeakPtr<DecryptingDemuxerStream> weak_this_; + base::WeakPtrFactory<DecryptingDemuxerStream> weak_factory_; DISALLOW_COPY_AND_ASSIGN(DecryptingDemuxerStream); }; diff --git a/media/filters/decrypting_video_decoder.h b/media/filters/decrypting_video_decoder.h index 9b57038..8e40502 100644 --- a/media/filters/decrypting_video_decoder.h +++ b/media/filters/decrypting_video_decoder.h @@ -110,9 +110,8 @@ class MEDIA_EXPORT DecryptingVideoDecoder : public VideoDecoder { // matching DecryptCB call (in DoDeliverFrame()). uint32 trace_id_; - // NOTE: Weak pointers must be invalidated before all other member variables. - base::WeakPtrFactory<DecryptingVideoDecoder> weak_factory_; base::WeakPtr<DecryptingVideoDecoder> weak_this_; + base::WeakPtrFactory<DecryptingVideoDecoder> weak_factory_; DISALLOW_COPY_AND_ASSIGN(DecryptingVideoDecoder); }; diff --git a/media/filters/renderer_impl.cc b/media/filters/renderer_impl.cc index f9237da..e15ad6e 100644 --- a/media/filters/renderer_impl.cc +++ b/media/filters/renderer_impl.cc @@ -35,8 +35,8 @@ RendererImpl::RendererImpl( cdm_context_(nullptr), underflow_disabled_for_testing_(false), clockless_video_playback_enabled_for_testing_(false), - weak_factory_(this), - weak_this_(weak_factory_.GetWeakPtr()) { + weak_factory_(this) { + weak_this_ = weak_factory_.GetWeakPtr(); DVLOG(1) << __FUNCTION__; } diff --git a/media/filters/renderer_impl.h b/media/filters/renderer_impl.h index 1000fa8..6a65bc0 100644 --- a/media/filters/renderer_impl.h +++ b/media/filters/renderer_impl.h @@ -171,9 +171,8 @@ class MEDIA_EXPORT RendererImpl : public Renderer { bool underflow_disabled_for_testing_; bool clockless_video_playback_enabled_for_testing_; - // NOTE: Weak pointers must be invalidated before all other member variables. - base::WeakPtrFactory<RendererImpl> weak_factory_; base::WeakPtr<RendererImpl> weak_this_; + base::WeakPtrFactory<RendererImpl> weak_factory_; DISALLOW_COPY_AND_ASSIGN(RendererImpl); }; diff --git a/media/mojo/services/mojo_renderer_service.cc b/media/mojo/services/mojo_renderer_service.cc index 2c83a1e..4d120a8 100644 --- a/media/mojo/services/mojo_renderer_service.cc +++ b/media/mojo/services/mojo_renderer_service.cc @@ -41,8 +41,8 @@ static void MojoTrampoline(const mojo::Closure& closure) { MojoRendererService::MojoRendererService() : state_(STATE_UNINITIALIZED), last_media_time_usec_(0), - weak_factory_(this), - weak_this_(weak_factory_.GetWeakPtr()) { + weak_factory_(this) { + weak_this_ = weak_factory_.GetWeakPtr(); DVLOG(1) << __FUNCTION__; scoped_refptr<base::SingleThreadTaskRunner> task_runner( diff --git a/media/mojo/services/mojo_renderer_service.h b/media/mojo/services/mojo_renderer_service.h index 71a4668..dc0183a 100644 --- a/media/mojo/services/mojo_renderer_service.h +++ b/media/mojo/services/mojo_renderer_service.h @@ -87,8 +87,8 @@ class MojoRendererService : public mojo::InterfaceImpl<mojo::MediaRenderer> { base::RepeatingTimer<MojoRendererService> time_update_timer_; uint64_t last_media_time_usec_; - base::WeakPtrFactory<MojoRendererService> weak_factory_; base::WeakPtr<MojoRendererService> weak_this_; + base::WeakPtrFactory<MojoRendererService> weak_factory_; DISALLOW_COPY_AND_ASSIGN(MojoRendererService); }; |