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

Commit 7057d372 authored by Jayant Chowdhary's avatar Jayant Chowdhary Committed by Automerger Merge Worker
Browse files

Merge "camera2: use bulk get methods while unmarshalling primitives." into tm-d1-dev am: c5a041d4

parents 10cf3e7d c5a041d4
Loading
Loading
Loading
Loading
+13 −25
Original line number Diff line number Diff line
@@ -45,46 +45,41 @@ public class MarshalQueryableArray<T> implements MarshalQueryable<T> {
    private static final boolean DEBUG = false;

    private static interface PrimitiveArrayFiller {
        public void fillPosition(Object arr, int index, ByteBuffer buffer);
        public void fillArray(Object arr, int size, ByteBuffer buffer);
        static PrimitiveArrayFiller getPrimitiveArrayFiller(Class<?> componentType) {
            if (componentType == int.class) {
                return new PrimitiveArrayFiller() {
                      @Override
                      public void fillPosition(Object arr, int index, ByteBuffer buffer) {
                          int i = buffer.getInt();
                          Array.setInt(arr, index, i);
                      public void fillArray(Object arr, int size, ByteBuffer buffer) {
                          buffer.asIntBuffer().get(int[].class.cast(arr), 0, size);
                      }
                };
            } else if (componentType == float.class) {
                return new PrimitiveArrayFiller() {
                      @Override
                      public void fillPosition(Object arr, int index, ByteBuffer buffer) {
                          float i = buffer.getFloat();
                          Array.setFloat(arr, index, i);
                      public void fillArray(Object arr, int size, ByteBuffer buffer) {
                          buffer.asFloatBuffer().get(float[].class.cast(arr), 0, size);
                      }
                };
            } else if (componentType == long.class) {
                return new PrimitiveArrayFiller() {
                      @Override
                      public void fillPosition(Object arr, int index, ByteBuffer buffer) {
                          long i = buffer.getLong();
                          Array.setLong(arr, index, i);
                      public void fillArray(Object arr, int size, ByteBuffer buffer) {
                          buffer.asLongBuffer().get(long[].class.cast(arr), 0, size);
                      }
                };
            } else if (componentType == double.class) {
                return new PrimitiveArrayFiller() {
                      @Override
                      public void fillPosition(Object arr, int index, ByteBuffer buffer) {
                          double i = buffer.getDouble();
                          Array.setDouble(arr, index, i);
                      public void fillArray(Object arr, int size, ByteBuffer buffer) {
                          buffer.asDoubleBuffer().get(double[].class.cast(arr), 0, size);
                      }
                };
            } else if (componentType == byte.class) {
                return new PrimitiveArrayFiller() {
                      @Override
                      public void fillPosition(Object arr, int index, ByteBuffer buffer) {
                          byte i = buffer.get();
                          Array.setByte(arr, index, i);
                      public void fillArray(Object arr, int size, ByteBuffer buffer) {
                          buffer.get(byte[].class.cast(arr), 0, size);
                      }
                };
            }
@@ -93,13 +88,6 @@ public class MarshalQueryableArray<T> implements MarshalQueryable<T> {
        }
    };

    static void unmarshalPrimitiveArray(Object arr, int size, ByteBuffer buffer,
            PrimitiveArrayFiller filler) {
        for (int i = 0; i < size; i++) {
            filler.fillPosition(arr, i, buffer);
        }
    }

    private class MarshalerArray extends Marshaler<T> {
        private final Class<T> mClass;
        private final Marshaler<?> mComponentMarshaler;
@@ -150,8 +138,8 @@ public class MarshalQueryableArray<T> implements MarshalQueryable<T> {
                array = Array.newInstance(mComponentClass, arraySize);
                if (isUnwrappedPrimitiveClass(mComponentClass) &&
                        mComponentClass == getPrimitiveTypeClass(mNativeType)) {
                    unmarshalPrimitiveArray(array, arraySize, buffer,
                            PrimitiveArrayFiller.getPrimitiveArrayFiller(mComponentClass));
                    PrimitiveArrayFiller.getPrimitiveArrayFiller(mComponentClass).fillArray(array,
                            arraySize, buffer);
                } else {
                    for (int i = 0; i < arraySize; ++i) {
                        Object elem = mComponentMarshaler.unmarshal(buffer);