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

Commit b7fdce6e authored by Jean-Michel Trivi's avatar Jean-Michel Trivi
Browse files

Audio policy: fix volume change on DEVICE_OUT_SPEAKER_SAFE

When changing stream volume, compare given device and current device
  for stream both as filtered through Volume::getDeviceForVolume.
This behavior matters for Android devices playing notifications and
  ringtones on the AUDIO_DEVICE_OUT_SPEAKER_SAFE, which is filtered
  out for volumes (see Volume.h for getDeviceForVolume() method).

Test: play a ringtone and modify volume with vol keys
Bug: 63004956
Change-Id: I139099f34e0ab091fd0ea761c75949656549f77a
parent 66feec9f
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -2165,7 +2165,8 @@ status_t AudioPolicyManager::setStreamVolumeIndex(audio_stream_type_t stream,
                continue;
            }
            routing_strategy curStrategy = getStrategy((audio_stream_type_t)curStream);
            audio_devices_t curStreamDevice = getDeviceForStrategy(curStrategy, false /*fromCache*/);
            audio_devices_t curStreamDevice = Volume::getDeviceForVolume(getDeviceForStrategy(
                    curStrategy, false /*fromCache*/));
            if ((device != AUDIO_DEVICE_OUT_DEFAULT_FOR_VOLUME) &&
                    ((curStreamDevice & device) == 0)) {
                continue;
@@ -2176,7 +2177,7 @@ status_t AudioPolicyManager::setStreamVolumeIndex(audio_stream_type_t stream,
                applyVolume = (curDevice & curStreamDevice) != 0;
            } else {
                applyVolume = !mVolumeCurves->hasVolumeIndexForDevice(
                        stream, Volume::getDeviceForVolume(curStreamDevice));
                        stream, curStreamDevice);
            }

            if (applyVolume) {