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

Commit cda85734 authored by Yurii Zubrytskyi's avatar Yurii Zubrytskyi
Browse files

[res] Double checked locking in ResourcesManager

The singleton is getting used more and more, so double checked
locking makes sense for its getter.

Test: build + boot
Flag: EXEMPT minor safe change
Change-Id: I13157039742a1cecccb129d16d50f7c0fe5d51f1
parent c9c0d5ee
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ public class ResourcesManager {
    static final String TAG = "ResourcesManager";
    private static final boolean DEBUG = false;

    private static ResourcesManager sResourcesManager;
    private static volatile ResourcesManager sResourcesManager;

    /**
     * Internal lock object
@@ -359,17 +359,20 @@ public class ResourcesManager {
            sResourcesManager = resourcesManager;
            return oldResourceManager;
        }

    }

    @UnsupportedAppUsage
    public static ResourcesManager getInstance() {
        var rm = sResourcesManager;
        if (rm == null) {
            synchronized (ResourcesManager.class) {
            if (sResourcesManager == null) {
                sResourcesManager = new ResourcesManager();
                rm = sResourcesManager;
                if (rm == null) {
                    sResourcesManager = rm = new ResourcesManager();
                }
            }
            return sResourcesManager;
        }
        return rm;
    }

    /**