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

Commit 71455ba2 authored by Andy Hung's avatar Andy Hung
Browse files

Fix VolumeShaper unducking for OpenSLES playback

Native PlayerBase::applyVolumeShaper was never called (silent failure)
due to an undeclared nullable InterpolatorConfig parcelable
which was sent as null.

Test: see bug for repro details
Bug: 185372526
Change-Id: Id18664978605602f287e15de0c920ffc83a9aada
parent 9a8a479a
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -29,5 +29,5 @@ parcelable VolumeShaperConfiguration {
    /** Bitmask, indexed by VolumeShaperConfigurationOptionFlag. */
    /** Bitmask, indexed by VolumeShaperConfigurationOptionFlag. */
    int optionFlags;
    int optionFlags;
    double durationMs;
    double durationMs;
    InterpolatorConfig interpolatorConfig;
    @nullable InterpolatorConfig interpolatorConfig; // null if type == ID
}
}
+6 −3
Original line number Original line Diff line number Diff line
@@ -302,7 +302,8 @@ public:
            if (mType != TYPE_ID) {
            if (mType != TYPE_ID) {
                parcelable->optionFlags = getOptionFlagsAsAidl();
                parcelable->optionFlags = getOptionFlagsAsAidl();
                parcelable->durationMs = getDurationMs();
                parcelable->durationMs = getDurationMs();
                Interpolator<S, T>::writeToConfig(&parcelable->interpolatorConfig);
                parcelable->interpolatorConfig.emplace(); // create value in std::optional
                Interpolator<S, T>::writeToConfig(&*parcelable->interpolatorConfig);
            }
            }
        }
        }


@@ -319,7 +320,9 @@ public:
                      ? NO_ERROR
                      ? NO_ERROR
                      : setOptionFlagsFromAidl(parcelable.optionFlags)
                      : setOptionFlagsFromAidl(parcelable.optionFlags)
                        ?: setDurationMs(parcelable.durationMs)
                        ?: setDurationMs(parcelable.durationMs)
                           ?: Interpolator<S, T>::readFromConfig(parcelable.interpolatorConfig)
                           ?: !parcelable.interpolatorConfig  // check std::optional for value
                               ? BAD_VALUE // must be nonnull.
                               : Interpolator<S, T>::readFromConfig(*parcelable.interpolatorConfig)
                                   ?: checkCurve();
                                   ?: checkCurve();
        }
        }