diff options
author | jrummell@chromium.org <jrummell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-10 02:54:03 +0000 |
---|---|---|
committer | jrummell@chromium.org <jrummell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-10 02:54:03 +0000 |
commit | 3f19db7ce67739976d924d5163e86a20e718d5c0 (patch) | |
tree | d126b98bb59bfb26be1d4e23c3edaba6d42f7dfd /media/cdm/aes_decryptor.cc | |
parent | a852ff2f4bf521063e592ef7e39f72c213d46b0f (diff) | |
download | chromium_src-3f19db7ce67739976d924d5163e86a20e718d5c0.zip chromium_src-3f19db7ce67739976d924d5163e86a20e718d5c0.tar.gz chromium_src-3f19db7ce67739976d924d5163e86a20e718d5c0.tar.bz2 |
AesDecryptor callbacks now used in a thread-safe manner
Add lock around use of callbacks.
BUG=329530
TEST=browser_tests for encrypted media pass
TBR=glider
Review URL: https://codereview.chromium.org/105933004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@244056 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/cdm/aes_decryptor.cc')
-rw-r--r-- | media/cdm/aes_decryptor.cc | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/media/cdm/aes_decryptor.cc b/media/cdm/aes_decryptor.cc index 9f9f080..c682e02 100644 --- a/media/cdm/aes_decryptor.cc +++ b/media/cdm/aes_decryptor.cc @@ -285,11 +285,15 @@ void AesDecryptor::UpdateSession(uint32 session_id, } } - if (!new_audio_key_cb_.is_null()) - new_audio_key_cb_.Run(); + { + base::AutoLock auto_lock(new_key_cb_lock_); - if (!new_video_key_cb_.is_null()) - new_video_key_cb_.Run(); + if (!new_audio_key_cb_.is_null()) + new_audio_key_cb_.Run(); + + if (!new_video_key_cb_.is_null()) + new_video_key_cb_.Run(); + } session_ready_cb_.Run(session_id); } @@ -310,6 +314,8 @@ Decryptor* AesDecryptor::GetDecryptor() { void AesDecryptor::RegisterNewKeyCB(StreamType stream_type, const NewKeyCB& new_key_cb) { + base::AutoLock auto_lock(new_key_cb_lock_); + switch (stream_type) { case kAudio: new_audio_key_cb_ = new_key_cb; |