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

Commit 43423549 authored by Kenny Guy's avatar Kenny Guy Committed by Android (Google) Code Review
Browse files

Merge "Fix LauncherApps registerCallback adding duplicate callbacks." into mnc-dev

parents d66559f2 172a2169
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -294,7 +294,7 @@ public class LauncherApps {
     */
    public void registerCallback(Callback callback, Handler handler) {
        synchronized (this) {
            if (callback != null && !mCallbacks.contains(callback)) {
            if (callback != null && findCallbackLocked(callback) < 0) {
                boolean addedFirstCallback = mCallbacks.size() == 0;
                addCallbackLocked(callback, handler);
                if (addedFirstCallback) {
@@ -325,16 +325,24 @@ public class LauncherApps {
        }
    }

    private void removeCallbackLocked(Callback callback) {
    /** @return position in mCallbacks for callback or -1 if not present. */
    private int findCallbackLocked(Callback callback) {
        if (callback == null) {
            throw new IllegalArgumentException("Callback cannot be null");
        }
        final int size = mCallbacks.size();
        for (int i = 0; i < size; ++i) {
            if (mCallbacks.get(i).mCallback == callback) {
                mCallbacks.remove(i);
                return;
                return i;
            }
        }
        return -1;
    }

    private void removeCallbackLocked(Callback callback) {
        int pos = findCallbackLocked(callback);
        if (pos >= 0) {
            mCallbacks.remove(pos);
        }
    }