Fix a race condition in WidevineEncryptionKeySource
The race condition could cause incorrect progress in current crypto period index. Change-Id: I76a1a3be16e2266fd07b5bbf73cb9470eafaac4b
This commit is contained in:
parent
0f49af6cc1
commit
4519dda07c
|
@ -154,12 +154,15 @@ WidevineEncryptionKeySource::~WidevineEncryptionKeySource() {
|
||||||
}
|
}
|
||||||
|
|
||||||
Status WidevineEncryptionKeySource::Initialize() {
|
Status WidevineEncryptionKeySource::Initialize() {
|
||||||
|
// |first_crypto_period_index| might be updated after starting production.
|
||||||
|
// Make a local copy for prime later.
|
||||||
|
const uint32 first_crypto_period_index = first_crypto_period_index_;
|
||||||
DCHECK(!key_production_thread_.HasBeenStarted());
|
DCHECK(!key_production_thread_.HasBeenStarted());
|
||||||
key_production_thread_.Start();
|
key_production_thread_.Start();
|
||||||
|
|
||||||
// Perform a GetKey request to find out common encryption request status.
|
// Perform a GetKey request to find out common encryption request status.
|
||||||
// It also primes the key_pool if successful.
|
// It also primes the key_pool if successful.
|
||||||
return key_rotation_enabled_ ? GetCryptoPeriodKey(first_crypto_period_index_,
|
return key_rotation_enabled_ ? GetCryptoPeriodKey(first_crypto_period_index,
|
||||||
TRACK_TYPE_SD, NULL)
|
TRACK_TYPE_SD, NULL)
|
||||||
: GetKey(TRACK_TYPE_SD, NULL);
|
: GetKey(TRACK_TYPE_SD, NULL);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue