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

Commit f9316fe6 authored by Siarhei Vishniakou's avatar Siarhei Vishniakou
Browse files

Send vector to hasKeys

Update the usage of hasKeys to send a vector instead of raw array.

Bug: 228005926
Test: m
Change-Id: If3c193ef838d46aee15b800ea68364ae1fca0c46
parent 8d99d6ac
Loading
Loading
Loading
Loading
+15 −10
Original line number Diff line number Diff line
@@ -1548,27 +1548,32 @@ static jint nativeGetSwitchState(JNIEnv* env, jobject nativeImplObj, jint device
                                                                   sw);
}

static std::vector<int32_t> getIntArray(JNIEnv* env, jintArray arr) {
    int32_t* a = env->GetIntArrayElements(arr, nullptr);
    jsize size = env->GetArrayLength(arr);
    std::vector<int32_t> vec(a, a + size);
    env->ReleaseIntArrayElements(arr, a, 0);
    return vec;
}

static jboolean nativeHasKeys(JNIEnv* env, jobject nativeImplObj, jint deviceId, jint sourceMask,
                              jintArray keyCodes, jbooleanArray outFlags) {
    NativeInputManager* im = getNativeInputManager(env, nativeImplObj);

    int32_t* codes = env->GetIntArrayElements(keyCodes, nullptr);
    const std::vector codes = getIntArray(env, keyCodes);
    uint8_t* flags = env->GetBooleanArrayElements(outFlags, nullptr);
    jsize numCodes = env->GetArrayLength(keyCodes);
    jsize numCodes = env->GetArrayLength(outFlags);
    jboolean result;
    if (numCodes == env->GetArrayLength(keyCodes)) {
        if (im->getInputManager()->getReader().hasKeys(deviceId, uint32_t(sourceMask), numCodes,
                                                       codes, flags)) {
            result = JNI_TRUE;
        } else {
            result = JNI_FALSE;
    if (numCodes != codes.size()) {
        return JNI_FALSE;
    }
    if (im->getInputManager()->getReader().hasKeys(deviceId, uint32_t(sourceMask), codes, flags)) {
        result = JNI_TRUE;
    } else {
        result = JNI_FALSE;
    }

    env->ReleaseBooleanArrayElements(outFlags, flags, 0);
    env->ReleaseIntArrayElements(keyCodes, codes, 0);
    return result;
}