summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordmichael <dmichael@chromium.org>2014-12-09 12:02:47 -0800
committerCommit bot <commit-bot@chromium.org>2014-12-09 20:03:17 +0000
commit284c5e97e4d17fa5c378b0f26117d1cea2fd65cc (patch)
treead7d46990ffb80d5265fc8beb39cf6cadebb4bfc
parentda4bb3f6153553754222f1b1f46c573a3c29aeff (diff)
downloadchromium_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}
-rw-r--r--media/blink/buffered_data_source.cc4
-rw-r--r--media/blink/buffered_data_source.h6
-rw-r--r--media/filters/decrypting_audio_decoder.h3
-rw-r--r--media/filters/decrypting_demuxer_stream.h3
-rw-r--r--media/filters/decrypting_video_decoder.h3
-rw-r--r--media/filters/renderer_impl.cc4
-rw-r--r--media/filters/renderer_impl.h3
-rw-r--r--media/mojo/services/mojo_renderer_service.cc4
-rw-r--r--media/mojo/services/mojo_renderer_service.h2
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);
};