From 5506ed0be05615c396c9e23e6c7d4b815a56631b Mon Sep 17 00:00:00 2001 From: maohangyu <1027148132@qq.com> Date: Thu, 4 Sep 2025 14:33:02 +0800 Subject: [PATCH 1/3] fix interrupt Signed-off-by: maohangyu <1027148132@qq.com> --- .../server/domain/interrupt/include/audio_interrupt_zone.h | 2 +- .../domain/interrupt/src/audio_interrupt_service.cpp | 7 ++++--- .../server/domain/interrupt/src/audio_interrupt_zone.cpp | 4 +++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/services/audio_policy/server/domain/interrupt/include/audio_interrupt_zone.h b/services/audio_policy/server/domain/interrupt/include/audio_interrupt_zone.h index 8839be6eae..1814286d2c 100644 --- a/services/audio_policy/server/domain/interrupt/include/audio_interrupt_zone.h +++ b/services/audio_policy/server/domain/interrupt/include/audio_interrupt_zone.h @@ -58,7 +58,7 @@ protected: int32_t CreateAudioInterruptZone(const int32_t zoneId, const AudioZoneContext &context, bool checkPermission = true); int32_t ReleaseAudioInterruptZone(const int32_t zoneId, GetZoneIdFunc func); - int32_t MigrateAudioInterruptZone(const int32_t zoneId, GetZoneIdFunc func); + int32_t MigrateAudioInterruptZone(const int32_t zoneId, int32_t &destZoneId, GetZoneIdFunc func); int32_t InjectInterruptToAudioZone(const int32_t zoneId, const AudioFocusList &interrupts); int32_t InjectInterruptToAudioZone(const int32_t zoneId, const std::string &deviceTag, const AudioFocusList &interrupts); diff --git a/services/audio_policy/server/domain/interrupt/src/audio_interrupt_service.cpp b/services/audio_policy/server/domain/interrupt/src/audio_interrupt_service.cpp index 3be0c3ae6d..faef02edc7 100644 --- a/services/audio_policy/server/domain/interrupt/src/audio_interrupt_service.cpp +++ b/services/audio_policy/server/domain/interrupt/src/audio_interrupt_service.cpp @@ -1125,13 +1125,14 @@ int32_t AudioInterruptService::ReleaseAudioInterruptZone(const int32_t zoneId, G int32_t AudioInterruptService::MigrateAudioInterruptZone(const int32_t zoneId, GetZoneIdFunc func) { std::unique_lock lock(mutex_); - int32_t ret = zoneManager_.MigrateAudioInterruptZone(zoneId, func); + int32_t destZoneId = zoneId; + int32_t ret = zoneManager_.MigrateAudioInterruptZone(zoneId, destZoneId, func); if (ret != SUCCESS) { return ret; } - AudioScene targetAudioScene = GetHighestPriorityAudioScene(zoneId); + AudioScene targetAudioScene = GetHighestPriorityAudioScene(ZONEID_DEFAULT); lock.unlock(); - UpdateAudioSceneFromInterrupt(targetAudioScene, ACTIVATE_AUDIO_INTERRUPT, zoneId); + UpdateAudioSceneFromInterrupt(targetAudioScene, ACTIVATE_AUDIO_INTERRUPT, destZoneId); return SUCCESS; } diff --git a/services/audio_policy/server/domain/interrupt/src/audio_interrupt_zone.cpp b/services/audio_policy/server/domain/interrupt/src/audio_interrupt_zone.cpp index 56fb7d0bb7..e1c1764d3d 100644 --- a/services/audio_policy/server/domain/interrupt/src/audio_interrupt_zone.cpp +++ b/services/audio_policy/server/domain/interrupt/src/audio_interrupt_zone.cpp @@ -139,7 +139,8 @@ void AudioInterruptZoneManager::ForceStopAudioFocusInZone(int32_t zoneId, const audioSession->RemoveStreamInfo(interrupt.streamId); } -int32_t AudioInterruptZoneManager::MigrateAudioInterruptZone(const int32_t zoneId, GetZoneIdFunc func) +int32_t AudioInterruptZoneManager::MigrateAudioInterruptZone(const int32_t zoneId, int32_t &destZoneId, + GetZoneIdFunc func) { CHECK_AND_RETURN_RET_LOG(service_ != nullptr, ERR_INVALID_PARAM, "interrupt service is nullptr"); CHECK_AND_RETURN_RET_LOG(func != nullptr, ERR_INVALID_PARAM, "zone id is invalid"); @@ -164,6 +165,7 @@ int32_t AudioInterruptZoneManager::MigrateAudioInterruptZone(const int32_t zoneI } focusInfoList.erase(itFocus++); isMigrate = true; + destZoneId = toZoneId; } CHECK_AND_RETURN_RET_LOG(isMigrate, SUCCESS, "no interrupt need migrate"); -- Gitee From fae9719408a35095843529430843215aeff2e17f Mon Sep 17 00:00:00 2001 From: maohangyu <1027148132@qq.com> Date: Fri, 5 Sep 2025 03:13:26 +0000 Subject: [PATCH 2/3] update services/audio_policy/server/domain/interrupt/include/audio_interrupt_zone.h. Signed-off-by: maohangyu <1027148132@qq.com> --- .../server/domain/interrupt/include/audio_interrupt_zone.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/audio_policy/server/domain/interrupt/include/audio_interrupt_zone.h b/services/audio_policy/server/domain/interrupt/include/audio_interrupt_zone.h index 1814286d2c..8839be6eae 100644 --- a/services/audio_policy/server/domain/interrupt/include/audio_interrupt_zone.h +++ b/services/audio_policy/server/domain/interrupt/include/audio_interrupt_zone.h @@ -58,7 +58,7 @@ protected: int32_t CreateAudioInterruptZone(const int32_t zoneId, const AudioZoneContext &context, bool checkPermission = true); int32_t ReleaseAudioInterruptZone(const int32_t zoneId, GetZoneIdFunc func); - int32_t MigrateAudioInterruptZone(const int32_t zoneId, int32_t &destZoneId, GetZoneIdFunc func); + int32_t MigrateAudioInterruptZone(const int32_t zoneId, GetZoneIdFunc func); int32_t InjectInterruptToAudioZone(const int32_t zoneId, const AudioFocusList &interrupts); int32_t InjectInterruptToAudioZone(const int32_t zoneId, const std::string &deviceTag, const AudioFocusList &interrupts); -- Gitee From ea4c4aa45f28a2a3f40b6d8a6b4911883bbc1bc2 Mon Sep 17 00:00:00 2001 From: maohangyu <1027148132@qq.com> Date: Fri, 5 Sep 2025 03:14:17 +0000 Subject: [PATCH 3/3] update services/audio_policy/server/domain/interrupt/src/audio_interrupt_zone.cpp. Signed-off-by: maohangyu <1027148132@qq.com> --- .../server/domain/interrupt/src/audio_interrupt_zone.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/services/audio_policy/server/domain/interrupt/src/audio_interrupt_zone.cpp b/services/audio_policy/server/domain/interrupt/src/audio_interrupt_zone.cpp index e1c1764d3d..56fb7d0bb7 100644 --- a/services/audio_policy/server/domain/interrupt/src/audio_interrupt_zone.cpp +++ b/services/audio_policy/server/domain/interrupt/src/audio_interrupt_zone.cpp @@ -139,8 +139,7 @@ void AudioInterruptZoneManager::ForceStopAudioFocusInZone(int32_t zoneId, const audioSession->RemoveStreamInfo(interrupt.streamId); } -int32_t AudioInterruptZoneManager::MigrateAudioInterruptZone(const int32_t zoneId, int32_t &destZoneId, - GetZoneIdFunc func) +int32_t AudioInterruptZoneManager::MigrateAudioInterruptZone(const int32_t zoneId, GetZoneIdFunc func) { CHECK_AND_RETURN_RET_LOG(service_ != nullptr, ERR_INVALID_PARAM, "interrupt service is nullptr"); CHECK_AND_RETURN_RET_LOG(func != nullptr, ERR_INVALID_PARAM, "zone id is invalid"); @@ -165,7 +164,6 @@ int32_t AudioInterruptZoneManager::MigrateAudioInterruptZone(const int32_t zoneI } focusInfoList.erase(itFocus++); isMigrate = true; - destZoneId = toZoneId; } CHECK_AND_RETURN_RET_LOG(isMigrate, SUCCESS, "no interrupt need migrate"); -- Gitee