Merge "Fix race condition in CDM policy timer"
This commit is contained in:
@@ -121,6 +121,7 @@ class WvContentDecryptionModule : public TimerHandler {
|
||||
void OnTimerEvent();
|
||||
|
||||
static Lock session_sharing_id_generation_lock_;
|
||||
Lock policy_timer_lock_;
|
||||
Timer policy_timer_;
|
||||
|
||||
// instance variables
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
|
||||
#include "wv_content_decryption_module.h"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "cdm_client_property_set.h"
|
||||
#include "cdm_engine.h"
|
||||
#include "initialization_data.h"
|
||||
@@ -214,11 +212,13 @@ void WvContentDecryptionModule::NotifyResolution(const CdmSessionId& session_id,
|
||||
}
|
||||
|
||||
void WvContentDecryptionModule::EnablePolicyTimer() {
|
||||
AutoLock auto_lock(policy_timer_lock_);
|
||||
if (!policy_timer_.IsRunning())
|
||||
policy_timer_.Start(this, kCdmPolicyTimerDurationSeconds);
|
||||
}
|
||||
|
||||
void WvContentDecryptionModule::DisablePolicyTimer(bool force) {
|
||||
AutoLock auto_lock(policy_timer_lock_);
|
||||
if ((cdm_engine_->SessionSize() == 0 || force) && policy_timer_.IsRunning())
|
||||
policy_timer_.Stop();
|
||||
}
|
||||
@@ -232,6 +232,4 @@ uint32_t WvContentDecryptionModule::GenerateSessionSharingId() {
|
||||
return ++next_session_sharing_id;
|
||||
}
|
||||
|
||||
|
||||
|
||||
} // namespace wvcdm
|
||||
|
||||
Reference in New Issue
Block a user