From c02ca8d68dac3acd2dc3e324050ffd68d80c626e Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Mon, 3 Oct 2022 21:13:46 +0200 Subject: [PATCH] Audio: fix AudioVolumeGroup JNI Fix volume group conversion from native to java to make sure the audio source is properly initialized to the default java value in a playback only context. Bug: 249966139 Test: atest com.android.audiopolicytest Test: atet com.google.android.gts.audioservice.AudioServiceHostTest#testAudioVolumeGroups Merged-In: If6e0b5ba576f3fdf89480205639b1c2a4b722456 Change-Id: If6e0b5ba576f3fdf89480205639b1c2a4b722456 (cherry picked from commit 2c5d09c410315798182882a004d1d8c871af4539) --- core/jni/android_media_AudioVolumeGroups.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/jni/android_media_AudioVolumeGroups.cpp b/core/jni/android_media_AudioVolumeGroups.cpp index 7098451901c42..1252e89935e58 100644 --- a/core/jni/android_media_AudioVolumeGroups.cpp +++ b/core/jni/android_media_AudioVolumeGroups.cpp @@ -94,6 +94,11 @@ static jint convertAudioVolumeGroupsFromNative( for (size_t j = 0; j < static_cast(numAttributes); j++) { auto attributes = group.getAudioAttributes()[j]; + // Native & Java audio attributes default initializers are not aligned for the source. + // Given the volume group class concerns only playback, this field must be equal to the + // default java initializer. + attributes.source = AUDIO_SOURCE_INVALID; + jStatus = JNIAudioAttributeHelper::nativeToJava(env, &jAudioAttribute, attributes); if (jStatus != AUDIO_JAVA_SUCCESS) { goto exit;