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

Commit 6768ef65 authored by Oscar Azucena's avatar Oscar Azucena
Browse files

Cache filtered audio product strategies

Bug: 432911065
Bug: 316643994
Flag: EXEMPT bug fix
Test: atest AudioManagerTest
Change-Id: I56ffd98abab398adec9ea644f1ca8e5a5e377129
parent 34524679
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -356,8 +356,9 @@ public final class AudioProductStrategy implements Parcelable {
     */
    public static List<AudioProductStrategy> filterNonInternalStrategies(
            List<AudioProductStrategy> strategies) {
        strategies.removeIf(AudioProductStrategy::isInternalStrategy);
        return Collections.unmodifiableList(strategies);
        List<AudioProductStrategy> filteredStrategies = new ArrayList<>(strategies);
        filteredStrategies.removeIf(AudioProductStrategy::isInternalStrategy);
        return Collections.unmodifiableList(filteredStrategies);
    }

    private static boolean isDefaultMatchScore(int matchScore) {
+10 −3
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import android.media.ISoundDoseCallback;
import android.media.audiopolicy.AudioMix;
import android.media.audiopolicy.AudioMixingRule;
import android.media.audiopolicy.AudioProductStrategy;
import android.media.audiopolicy.Flags;
import android.os.IBinder;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
@@ -88,6 +87,8 @@ public class AudioSystemAdapter implements AudioSystem.RoutingUpdateCallback,
    private static final Object sAudioProductStrategiesLock = new Object();
    @GuardedBy("sAudioProductStrategiesLock")
    private static List<AudioProductStrategy> sAudioProductStrategies;
    @GuardedBy("sAudioProductStrategiesLock")
    private static List<AudioProductStrategy> sAudioProductStrategiesWithoutInternal;
    private int[] mMethodCacheHit;
    /**
     * Map that stores all attributes + forVolume pairs that are registered for
@@ -755,7 +756,13 @@ public class AudioSystemAdapter implements AudioSystem.RoutingUpdateCallback,
     */
    public List<AudioProductStrategy> getAudioProductStrategies(boolean filterInternal) {
        if (filterInternal) {
            return AudioProductStrategy.filterNonInternalStrategies(getAllProductStrategies());
            synchronized (sAudioProductStrategiesLock) {
                if (sAudioProductStrategiesWithoutInternal == null) {
                    sAudioProductStrategiesWithoutInternal = AudioProductStrategy
                            .filterNonInternalStrategies(getAllProductStrategies());
                }
            }
            return sAudioProductStrategiesWithoutInternal;
        }
        return getAllProductStrategies();
    }
@@ -775,7 +782,7 @@ public class AudioSystemAdapter implements AudioSystem.RoutingUpdateCallback,
                            + AudioSystem.audioSystemErrorToString(status));
                    return Collections.emptyList();
                }
                sAudioProductStrategies = strategies;
                sAudioProductStrategies = Collections.unmodifiableList(strategies);
            }
        }