diff --git a/services/src/audio_policy/server/service/src/audio_policy_service.cpp b/services/src/audio_policy/server/service/src/audio_policy_service.cpp index bb886b51354e6f5d802c09ce0fc70b9ee5aaa5e2..dc78bb0d3001814e5b538a4725b156bf6bdfd404 100644 --- a/services/src/audio_policy/server/service/src/audio_policy_service.cpp +++ b/services/src/audio_policy/server/service/src/audio_policy_service.cpp @@ -92,7 +92,7 @@ std::string AudioPolicyService::GetPortName(DeviceType deviceType) int32_t AudioPolicyService::SetDeviceActive(DeviceType deviceType, bool active) { - MEDIA_DEBUG_LOG("SetDeviceActive - Policy Service: deviceType %d", deviceType); + MEDIA_DEBUG_LOG("[Policy Service] deviceType %{public}d, activate?: %{public}d", deviceType, active); if (deviceType == DEVICE_TYPE_NONE) return ERR_DEVICE_NOT_SUPPORTED; @@ -107,10 +107,12 @@ int32_t AudioPolicyService::SetDeviceActive(DeviceType deviceType, bool active) return ERROR; } - for (list::const_iterator iter = activeDevices.begin(); - iter != activeDevices.end(); ++iter) { + list::const_iterator iter = activeDevices.begin(); + while (iter != activeDevices.end()) { if (*iter == deviceType) { - activeDevices.erase(iter); + iter = activeDevices.erase(iter); + } else { + ++iter; } } @@ -126,21 +128,24 @@ int32_t AudioPolicyService::SetDeviceActive(DeviceType deviceType, bool active) result = ERR_DEVICE_NOT_SUPPORTED; } - if (!result) { - if (updateActiveDevices) { - for (list::const_iterator iter = activeDevices.begin(); - iter != activeDevices.end(); ++iter) { - if (*iter == deviceType) { - activeDevices.erase(iter); - } - } - activeDevices.push_front(deviceType); - } - return SUCCESS; - } else { + if (result) { MEDIA_ERR_LOG("SetDeviceActive - Policy Service: returned:%{public}d", result); return ERROR; } + + if (updateActiveDevices) { + list::const_iterator iter = activeDevices.begin(); + while (iter != activeDevices.end()) { + if (*iter == deviceType) { + iter = activeDevices.erase(iter); + } else { + ++iter; + } + } + activeDevices.push_front(deviceType); + } + + return SUCCESS; } bool AudioPolicyService::IsDeviceActive(DeviceType deviceType) const