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

Commit ef6fe13c authored by Martijn Coenen's avatar Martijn Coenen Committed by Gerrit Code Review
Browse files

Merge "Don't hold sProxyLock while retrieving interface descriptors."

parents f7aec5de e48baa5f
Loading
Loading
Loading
Loading
+30 −29
Original line number Diff line number Diff line
@@ -241,9 +241,16 @@ public final class BinderProxy implements IBinder {
            }

            Map<String, Integer> counts = new HashMap<>();
            final ArrayList<WeakReference<BinderProxy>> proxiesToQuery =
                    new ArrayList<WeakReference<BinderProxy>>();
            synchronized (sProxyMap) {
                for (ArrayList<WeakReference<BinderProxy>> a : mMainIndexValues) {
                    if (a != null) {
                    for (WeakReference<BinderProxy> weakRef : a) {
                        proxiesToQuery.addAll(a);
                    }
                }
            }
            for (WeakReference<BinderProxy> weakRef : proxiesToQuery) {
                BinderProxy bp = weakRef.get();
                String key;
                if (bp == null) {
@@ -265,8 +272,6 @@ public final class BinderProxy implements IBinder {
                    counts.put(key, i + 1);
                }
            }
                }
            }
            Map.Entry<String, Integer>[] sorted = counts.entrySet().toArray(
                    new Map.Entry[counts.size()]);

@@ -354,10 +359,8 @@ public final class BinderProxy implements IBinder {
     * @hide
     */
    public static InterfaceCount[] getSortedInterfaceCounts(int num) {
        synchronized (sProxyMap) {
        return sProxyMap.getSortedInterfaceCounts(num);
    }
    }

    /**
     * Returns the number of binder proxies held in this process.
@@ -376,12 +379,10 @@ public final class BinderProxy implements IBinder {
     */
    public static void dumpProxyDebugInfo() {
        if (Build.IS_DEBUGGABLE) {
            synchronized (sProxyMap) {
            sProxyMap.dumpProxyInterfaceCounts();
            sProxyMap.dumpPerUidProxyCounts();
        }
    }
    }

    /**
     * Return a BinderProxy for IBinder.