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

Commit 14923862 authored by Nick Pelly's avatar Nick Pelly Committed by Android Git Automerger
Browse files

am e69f4267: Merge "NfcAdapterExtras: reset singleton state if initialization...

am e69f4267: Merge "NfcAdapterExtras: reset singleton state if initialization fails." into gingerbread

* commit 'e69f4267':
  NfcAdapterExtras: reset singleton state if initialization fails.
parents 03aa986e e69f4267
Loading
Loading
Loading
Loading
+16 −9
Original line number Original line Diff line number Diff line
@@ -57,7 +57,6 @@ public final class NfcAdapterExtras {


    // protected by NfcAdapterExtras.class, and final after first construction
    // protected by NfcAdapterExtras.class, and final after first construction
    private static INfcAdapterExtras sService;
    private static INfcAdapterExtras sService;
    private static boolean sIsInitialized = false;
    private static NfcAdapterExtras sSingleton;
    private static NfcAdapterExtras sSingleton;
    private static NfcExecutionEnvironment sEmbeddedEe;
    private static NfcExecutionEnvironment sEmbeddedEe;
    private static CardEmulationRoute sRouteOff;
    private static CardEmulationRoute sRouteOff;
@@ -74,14 +73,22 @@ public final class NfcAdapterExtras {
     */
     */
    public static NfcAdapterExtras get(NfcAdapter adapter) {
    public static NfcAdapterExtras get(NfcAdapter adapter) {
        synchronized(NfcAdapterExtras.class) {
        synchronized(NfcAdapterExtras.class) {
            if (!sIsInitialized) {
            if (sSingleton == null) {
               sIsInitialized = true;
                try {
                    sService = adapter.getNfcAdapterExtrasInterface();
                    sService = adapter.getNfcAdapterExtrasInterface();
                    sEmbeddedEe = new NfcExecutionEnvironment(sService);
                    sEmbeddedEe = new NfcExecutionEnvironment(sService);
                    sRouteOff = new CardEmulationRoute(CardEmulationRoute.ROUTE_OFF, null);
                    sRouteOff = new CardEmulationRoute(CardEmulationRoute.ROUTE_OFF, null);
                    sRouteOnWhenScreenOn = new CardEmulationRoute(
                    sRouteOnWhenScreenOn = new CardEmulationRoute(
                            CardEmulationRoute.ROUTE_ON_WHEN_SCREEN_ON, sEmbeddedEe);
                            CardEmulationRoute.ROUTE_ON_WHEN_SCREEN_ON, sEmbeddedEe);
                    sSingleton = new NfcAdapterExtras();
                    sSingleton = new NfcAdapterExtras();
                } finally {
                    if (sSingleton == null) {
                        sService = null;
                        sEmbeddedEe = null;
                        sRouteOff = null;
                        sRouteOnWhenScreenOn = null;
                    }
                }
            }
            }
            return sSingleton;
            return sSingleton;
        }
        }