am 49e593d1: Stop policy timer before invoking session destructor
* commit '49e593d12702a3ffd671402e585dc271cc72d65b': Stop policy timer before invoking session destructor
This commit is contained in:
@@ -114,7 +114,7 @@ class CdmEngine : public TimerHandler {
|
|||||||
|
|
||||||
// timer related methods to drive policy decisions
|
// timer related methods to drive policy decisions
|
||||||
virtual void EnablePolicyTimer();
|
virtual void EnablePolicyTimer();
|
||||||
virtual void DisablePolicyTimer();
|
virtual void DisablePolicyTimer(bool force);
|
||||||
virtual void OnTimerEvent();
|
virtual void OnTimerEvent();
|
||||||
|
|
||||||
virtual void OnKeyReleaseEvent(const CdmKeySetId& key_set_id);
|
virtual void OnKeyReleaseEvent(const CdmKeySetId& key_set_id);
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ CdmEngine::CdmEngine()
|
|||||||
CdmEngine::~CdmEngine() {
|
CdmEngine::~CdmEngine() {
|
||||||
CancelSessions();
|
CancelSessions();
|
||||||
|
|
||||||
|
DisablePolicyTimer(true);
|
||||||
CdmSessionMap::iterator i(sessions_.begin());
|
CdmSessionMap::iterator i(sessions_.begin());
|
||||||
for (; i != sessions_.end(); ++i)
|
for (; i != sessions_.end(); ++i)
|
||||||
delete i->second;
|
delete i->second;
|
||||||
@@ -98,9 +99,10 @@ CdmResponseType CdmEngine::CloseSession(const CdmSessionId& session_id) {
|
|||||||
return KEY_ERROR;
|
return KEY_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete iter->second;
|
CdmSession* session = iter->second;
|
||||||
sessions_.erase(session_id);
|
sessions_.erase(session_id);
|
||||||
DisablePolicyTimer();
|
DisablePolicyTimer(false);
|
||||||
|
delete session;
|
||||||
return NO_ERROR;
|
return NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -295,7 +297,7 @@ CdmResponseType CdmEngine::CancelKeyRequest(const CdmSessionId& session_id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO(edwinwong, rfrias): unload keys here
|
// TODO(edwinwong, rfrias): unload keys here
|
||||||
DisablePolicyTimer();
|
DisablePolicyTimer(false);
|
||||||
return NO_ERROR;
|
return NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -675,8 +677,8 @@ void CdmEngine::EnablePolicyTimer() {
|
|||||||
policy_timer_.Start(this, kCdmPolicyTimerDurationSeconds);
|
policy_timer_.Start(this, kCdmPolicyTimerDurationSeconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CdmEngine::DisablePolicyTimer() {
|
void CdmEngine::DisablePolicyTimer(bool force) {
|
||||||
if (sessions_.size() == 0 && policy_timer_.IsRunning())
|
if ((sessions_.size() == 0 || force) && policy_timer_.IsRunning())
|
||||||
policy_timer_.Stop();
|
policy_timer_.Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user