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

Commit 3e572433 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Cache weak reference for static context." into sc-dev am: f7d20b35

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15245990

Change-Id: If8519b5b4e53930b845b3a2d1cc366e49cb1e479
parents c89889bb f7d20b35
Loading
Loading
Loading
Loading
+19 −14
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ import com.android.internal.util.Preconditions;
import java.io.IOException;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -103,7 +104,7 @@ public class AudioManager {
    private static final AudioVolumeGroupChangeHandler sAudioAudioVolumeGroupChangedHandler =
            new AudioVolumeGroupChangeHandler();

    private static Context sContext;
    private static WeakReference<Context> sContext;

    /**
     * Broadcast intent, a hint for applications that audio is about to become
@@ -800,7 +801,7 @@ public class AudioManager {
        } else {
            mOriginalContext = context;
        }
        sContext = context;
        sContext = new WeakReference<>(context);
    }

    @UnsupportedAppUsage
@@ -7256,14 +7257,19 @@ public class AudioManager {
     */
    public static boolean hasHapticChannels(@Nullable Context context, @NonNull Uri uri) {
        Objects.requireNonNull(uri);

        if (context != null) {
            return hasHapticChannelsImpl(context, uri);
        } else if (sContext != null) {
        }

        Context cachedContext = sContext.get();
        if (cachedContext != null) {
            if (DEBUG) {
                Log.d(TAG, "Try to use static context to query if having haptic channels");
            }
            return hasHapticChannelsImpl(sContext, uri);
        } else {
            return hasHapticChannelsImpl(cachedContext, uri);
        }

        // Try with audio service context, this may fail to get correct result.
        if (DEBUG) {
            Log.d(TAG, "Try to use audio service context to query if having haptic channels");
@@ -7274,7 +7280,6 @@ public class AudioManager {
            throw e.rethrowFromSystemServer();
        }
    }
    }

    /**
     * Set whether or not there is an active RTT call.