Chromium Code Reviews| 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_); |
|
qinmin
2015/09/15 21:10:45
what is this lock trying to guard against? all the
Tima Vaisburd
2015/09/15 23:48:56
Yes, the MediaDrmBridge calls them on the same med
Tima Vaisburd
2015/09/16 01:26:29
Removed the 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(); |