summaryrefslogtreecommitdiffstats
path: root/media/cdm/aes_decryptor.cc
diff options
context:
space:
mode:
authorjrummell@chromium.org <jrummell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-10 02:54:03 +0000
committerjrummell@chromium.org <jrummell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-10 02:54:03 +0000
commit3f19db7ce67739976d924d5163e86a20e718d5c0 (patch)
treed126b98bb59bfb26be1d4e23c3edaba6d42f7dfd /media/cdm/aes_decryptor.cc
parenta852ff2f4bf521063e592ef7e39f72c213d46b0f (diff)
downloadchromium_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.cc14
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;