Remove aggressive thread checker from WeakPtrReference

This allows to create WeakPtr and dereference it on different threads.
Fix test to validate it.

Bug: webrtc:8517
Change-Id: Idaf0bbdcf14bffbe43cb5fb6514041e8fa746004
Reviewed-on: https://webrtc-review.googlesource.com/21700
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20634}
This commit is contained in:
Danil Chapovalov
2017-11-09 18:44:31 +01:00
committed by Commit Bot
parent 0ec39e2d0f
commit 66cebbda35
3 changed files with 15 additions and 12 deletions

View File

@ -52,16 +52,13 @@ bool WeakReference::is_valid() const {
}
WeakReferenceOwner::WeakReferenceOwner() {
checker_.Detach();
}
WeakReferenceOwner::~WeakReferenceOwner() {
RTC_DCHECK(checker_.CalledSequentially());
Invalidate();
}
WeakReference WeakReferenceOwner::GetRef() const {
RTC_DCHECK(checker_.CalledSequentially());
// If we hold the last reference to the Flag then create a new one.
if (!HasRefs())
flag_ = new RefCountedObject<WeakReference::Flag>();
@ -70,7 +67,6 @@ WeakReference WeakReferenceOwner::GetRef() const {
}
void WeakReferenceOwner::Invalidate() {
RTC_DCHECK(checker_.CalledSequentially());
if (flag_.get()) {
flag_->Invalidate();
flag_ = nullptr;