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

Commit 938fe5c9 authored by Will Brazil's avatar Will Brazil Committed by android-build-merger
Browse files

Merge "Camera2: Cache method list in MethodNameInvoker." into oc-dev

am: 71029bf6

Change-Id: I99c6322d7e06262861eb0bb8be4ce8d4572ffbae
parents c14f46b1 71029bf6
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -15,13 +15,13 @@
 */
package android.hardware.camera2.dispatch;

import static com.android.internal.util.Preconditions.checkNotNull;

import android.hardware.camera2.utils.UncheckedThrow;

import java.lang.reflect.Method;
import java.util.concurrent.ConcurrentHashMap;

import static com.android.internal.util.Preconditions.*;

/**
 * Invoke a method on a dispatchable by its name (without knowing the {@code Method} ahead of time).
 *
@@ -31,6 +31,7 @@ public class MethodNameInvoker<T> {

    private final Dispatchable<T> mTarget;
    private final Class<T> mTargetClass;
    private final Method[] mTargetClassMethods;
    private final ConcurrentHashMap<String, Method> mMethods =
            new ConcurrentHashMap<>();

@@ -42,6 +43,7 @@ public class MethodNameInvoker<T> {
     */
    public MethodNameInvoker(Dispatchable<T> target, Class<T> targetClass) {
        mTargetClass = targetClass;
        mTargetClassMethods = targetClass.getMethods();
        mTarget = target;
    }

@@ -68,7 +70,7 @@ public class MethodNameInvoker<T> {

        Method targetMethod = mMethods.get(methodName);
        if (targetMethod == null) {
            for (Method method : mTargetClass.getMethods()) {
            for (Method method : mTargetClassMethods) {
                // TODO future: match types of params if possible
                if (method.getName().equals(methodName) &&
                        (params.length == method.getParameterTypes().length) ) {