Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 47e3b6bf authored by François Gaffie's avatar François Gaffie Committed by Eric Laurent
Browse files

[BUG] audio: Misalignement of Native/Java AudioAttributes

Native audio attributes are initialized with a default source,
whereas JAVA AudioAttributes are initialized with an INVALID source.
It leads to equality failure, thus preventing to identify the
right strategy / volume group.
This CL fixes this misalignement by using the builder constructor
from AudioAttributes, thus cleaning the input source.

Test: AudioVolumeGroupTest
Bug: 238058094
Bug: 248287204
Change-Id: I0aa6f19bb0f448e853adcc0dacece4d69c665602
parent bdf75500
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -86,8 +86,8 @@ static jint convertAudioProductStrategiesFromNative(

    // Audio Attributes Group array
    int attrGroupIndex = 0;
    std::map<int /**attributesGroupIndex*/, std::vector<AudioAttributes> > groups;
    for (const auto &attr : strategy.getAudioAttributes()) {
    std::map<int /**attributesGroupIndex*/, std::vector<VolumeGroupAttributes> > groups;
    for (const auto &attr : strategy.getVolumeGroupAttributes()) {
        int groupId = attr.getGroupId();
        int streamType = attr.getStreamType();
        const auto &iter = std::find_if(begin(groups), end(groups),
@@ -108,17 +108,17 @@ static jint convertAudioProductStrategiesFromNative(
    jAudioAttributesGroups = env->NewObjectArray(numAttributesGroups, gAudioAttributesGroupClass, NULL);

    for (const auto &iter : groups) {
        std::vector<AudioAttributes> audioAttributesGroups = iter.second;
        jint numAttributes = audioAttributesGroups.size();
        jint jGroupId = audioAttributesGroups.front().getGroupId();
        jint jLegacyStreamType = audioAttributesGroups.front().getStreamType();
        std::vector<VolumeGroupAttributes> volumeGroupAttributes = iter.second;
        jint numAttributes = volumeGroupAttributes.size();
        jint jGroupId = volumeGroupAttributes.front().getGroupId();
        jint jLegacyStreamType = volumeGroupAttributes.front().getStreamType();

        jStatus = JNIAudioAttributeHelper::getJavaArray(env, &jAudioAttributes, numAttributes);
        if (jStatus != (jint)AUDIO_JAVA_SUCCESS) {
            goto exit;
        }
        for (size_t j = 0; j < static_cast<size_t>(numAttributes); j++) {
            auto attributes = audioAttributesGroups[j].getAttributes();
            auto attributes = volumeGroupAttributes[j].getAttributes();

            jStatus = JNIAudioAttributeHelper::nativeToJava(env, &jAudioAttribute, attributes);
            if (jStatus != AUDIO_JAVA_SUCCESS) {