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

Commit ab0cbeff authored by Pascal Muetschard's avatar Pascal Muetschard
Browse files

DCL is broken and should not be used.

Use the acceptable instance holder pattern as a replacement.

Change-Id: I0164b8c17db4e6e15aee5a862fa8e625a9b1bbf4
parent fbaaa44c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -9,3 +9,4 @@ android.net.rtp.AudioGroup
android.net.rtp.AudioStream
android.net.rtp.RtpStream
java.util.concurrent.ThreadLocalRandom
com.android.internal.jank.InteractionJankMonitor$InstanceHolder
+5 −10
Original line number Diff line number Diff line
@@ -292,7 +292,10 @@ public class InteractionJankMonitor {
            UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_CLEAR_ALL,
    };

    private static volatile InteractionJankMonitor sInstance;
    private static class InstanceHolder {
        public static final InteractionJankMonitor INSTANCE =
            new InteractionJankMonitor(new HandlerThread(DEFAULT_WORKER_NAME));
    }

    private final DeviceConfig.OnPropertiesChangedListener mPropertiesChangedListener =
            this::updateProperties;
@@ -384,15 +387,7 @@ public class InteractionJankMonitor {
     * @return instance of InteractionJankMonitor
     */
    public static InteractionJankMonitor getInstance() {
        // Use DCL here since this method might be invoked very often.
        if (sInstance == null) {
            synchronized (InteractionJankMonitor.class) {
                if (sInstance == null) {
                    sInstance = new InteractionJankMonitor(new HandlerThread(DEFAULT_WORKER_NAME));
                }
            }
        }
        return sInstance;
        return InstanceHolder.INSTANCE;
    }

    /**