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