| Index: media/cdm/player_tracker_impl.cc
|
| diff --git a/media/cdm/player_tracker_impl.cc b/media/cdm/player_tracker_impl.cc
|
| index 8f102bd724e18ac00a200e2bfb4efd330b040131..ff0e5f71e217339d433c4cb90a2082125782f78f 100644
|
| --- a/media/cdm/player_tracker_impl.cc
|
| +++ b/media/cdm/player_tracker_impl.cc
|
| @@ -25,7 +25,10 @@ PlayerTrackerImpl::~PlayerTrackerImpl() {}
|
|
|
| int PlayerTrackerImpl::RegisterPlayer(const base::Closure& new_key_cb,
|
| const base::Closure& cdm_unset_cb) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| + DVLOG(1) << "PlayerTrackerImpl::RegisterPlayer";
|
| +
|
| + base::AutoLock lock(lock_);
|
| +
|
| int registration_id = next_registration_id_++;
|
| DCHECK(!ContainsKey(player_callbacks_map_, registration_id));
|
| player_callbacks_map_.insert(std::make_pair(
|
| @@ -34,21 +37,32 @@ int PlayerTrackerImpl::RegisterPlayer(const base::Closure& new_key_cb,
|
| }
|
|
|
| void PlayerTrackerImpl::UnregisterPlayer(int registration_id) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| + base::AutoLock lock(lock_);
|
| +
|
| DCHECK(ContainsKey(player_callbacks_map_, registration_id))
|
| << registration_id;
|
| player_callbacks_map_.erase(registration_id);
|
| }
|
|
|
| void PlayerTrackerImpl::NotifyNewKey() {
|
| + // Ensure that callbacks are called on the same thread that created this
|
| + // class.
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| +
|
| + base::AutoLock lock(lock_);
|
| +
|
| std::map<int, PlayerCallbacks>::iterator iter = player_callbacks_map_.begin();
|
| for (; iter != player_callbacks_map_.end(); ++iter)
|
| iter->second.new_key_cb.Run();
|
| }
|
|
|
| void PlayerTrackerImpl::NotifyCdmUnset() {
|
| + // Ensure that callbacks are called on the same thread that created this
|
| + // class.
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| +
|
| + base::AutoLock lock(lock_);
|
| +
|
| std::map<int, PlayerCallbacks>::iterator iter = player_callbacks_map_.begin();
|
| for (; iter != player_callbacks_map_.end(); ++iter)
|
| iter->second.cdm_unset_cb.Run();
|
|
|