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

Commit ab30d8d8 authored by Evan Severson's avatar Evan Severson Committed by Android (Google) Code Review
Browse files

Merge "Copy pointer to sOnOpNotedCallback before queuing dispatch"

parents cac7fc1c 877ec882
Loading
Loading
Loading
Loading
+10 −10
Original line number Original line Diff line number Diff line
@@ -9469,23 +9469,23 @@ public class AppOpsManager {
                    e.rethrowFromSystemServer();
                    e.rethrowFromSystemServer();
                }
                }


                if (missedAsyncOps != null) {
                // Copy pointer so callback can be dispatched out of lock
                OnOpNotedCallback onOpNotedCallback = sOnOpNotedCallback;
                if (onOpNotedCallback != null && missedAsyncOps != null) {
                    int numMissedAsyncOps = missedAsyncOps.size();
                    int numMissedAsyncOps = missedAsyncOps.size();
                    for (int i = 0; i < numMissedAsyncOps; i++) {
                    for (int i = 0; i < numMissedAsyncOps; i++) {
                        final AsyncNotedAppOp asyncNotedAppOp = missedAsyncOps.get(i);
                        final AsyncNotedAppOp asyncNotedAppOp = missedAsyncOps.get(i);
                        if (sOnOpNotedCallback != null) {
                        onOpNotedCallback.getAsyncNotedExecutor().execute(
                            sOnOpNotedCallback.getAsyncNotedExecutor().execute(
                                () -> onOpNotedCallback.onAsyncNoted(asyncNotedAppOp));
                                    () -> sOnOpNotedCallback.onAsyncNoted(asyncNotedAppOp));
                        }
                    }
                    }
                }
                }
                synchronized (this) {
                synchronized (this) {
                    int numMissedSyncOps = sUnforwardedOps.size();
                    int numMissedSyncOps = sUnforwardedOps.size();
                    if (onOpNotedCallback != null) {
                        for (int i = 0; i < numMissedSyncOps; i++) {
                        for (int i = 0; i < numMissedSyncOps; i++) {
                            final AsyncNotedAppOp syncNotedAppOp = sUnforwardedOps.get(i);
                            final AsyncNotedAppOp syncNotedAppOp = sUnforwardedOps.get(i);
                        if (sOnOpNotedCallback != null) {
                            onOpNotedCallback.getAsyncNotedExecutor().execute(
                            sOnOpNotedCallback.getAsyncNotedExecutor().execute(
                                    () -> onOpNotedCallback.onAsyncNoted(syncNotedAppOp));
                                    () -> sOnOpNotedCallback.onAsyncNoted(syncNotedAppOp));
                        }
                        }
                    }
                    }
                    sUnforwardedOps.clear();
                    sUnforwardedOps.clear();