Commit 2dd23c37 authored by dmichael's avatar dmichael Committed by Commit bot

Fix WeakPtrFactory members in Android media classes

This forces WeakPtrs to be invalidated before other members' destructors run.
See the bug or the documentation of WeakPtrFactory for more information. I'm
in the process of trying to turn on a clang check for this (see the bug).

BUG=303818
TBR=qinmin@chromium.org

Review URL: https://codereview.chromium.org/841453006

Cr-Commit-Position: refs/heads/master@{#311506}
parent 62e31ac2
...@@ -65,8 +65,8 @@ MediaSourceDelegate::MediaSourceDelegate( ...@@ -65,8 +65,8 @@ MediaSourceDelegate::MediaSourceDelegate(
main_task_runner_(base::MessageLoopProxy::current()), main_task_runner_(base::MessageLoopProxy::current()),
media_task_runner_(media_task_runner), media_task_runner_(media_task_runner),
main_weak_factory_(this), main_weak_factory_(this),
media_weak_factory_(this), media_weak_factory_(this) {
main_weak_this_(main_weak_factory_.GetWeakPtr()) { main_weak_this_ = main_weak_factory_.GetWeakPtr();
DCHECK(main_task_runner_->BelongsToCurrentThread()); DCHECK(main_task_runner_->BelongsToCurrentThread());
} }
......
...@@ -227,9 +227,9 @@ class MediaSourceDelegate : public media::DemuxerHost { ...@@ -227,9 +227,9 @@ class MediaSourceDelegate : public media::DemuxerHost {
const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_; const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
// NOTE: Weak pointers must be invalidated before all other member variables. // NOTE: Weak pointers must be invalidated before all other member variables.
base::WeakPtr<MediaSourceDelegate> main_weak_this_;
base::WeakPtrFactory<MediaSourceDelegate> main_weak_factory_; base::WeakPtrFactory<MediaSourceDelegate> main_weak_factory_;
base::WeakPtrFactory<MediaSourceDelegate> media_weak_factory_; base::WeakPtrFactory<MediaSourceDelegate> media_weak_factory_;
base::WeakPtr<MediaSourceDelegate> main_weak_this_;
DISALLOW_COPY_AND_ASSIGN(MediaSourceDelegate); DISALLOW_COPY_AND_ASSIGN(MediaSourceDelegate);
}; };
......
...@@ -273,9 +273,9 @@ class MEDIA_EXPORT MediaSourcePlayer : public MediaPlayerAndroid, ...@@ -273,9 +273,9 @@ class MEDIA_EXPORT MediaSourcePlayer : public MediaPlayerAndroid,
bool prerolling_; bool prerolling_;
// Weak pointer passed to media decoder jobs for callbacks. // Weak pointer passed to media decoder jobs for callbacks.
base::WeakPtr<MediaSourcePlayer> weak_this_;
// NOTE: Weak pointers must be invalidated before all other member variables. // NOTE: Weak pointers must be invalidated before all other member variables.
base::WeakPtrFactory<MediaSourcePlayer> weak_factory_; base::WeakPtrFactory<MediaSourcePlayer> weak_factory_;
base::WeakPtr<MediaSourcePlayer> weak_this_;
DISALLOW_COPY_AND_ASSIGN(MediaSourcePlayer); DISALLOW_COPY_AND_ASSIGN(MediaSourcePlayer);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment