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

Commit e3ca6463 authored by Siarhei Vishniakou's avatar Siarhei Vishniakou Committed by Android (Google) Code Review
Browse files

Merge "Revert "Changed local refs in JNI to ScopedLocalRef"" into qt-dev

parents 297e3ab1 eb7e1504
Loading
Loading
Loading
Loading
+17 −17
Original line number Original line Diff line number Diff line
@@ -724,18 +724,19 @@ nsecs_t NativeInputManager::notifyANR(const sp<InputApplicationHandle>& inputApp


    JNIEnv* env = jniEnv();
    JNIEnv* env = jniEnv();


    ScopedLocalRef<jobject> tokenObj(env, javaObjectForIBinder(env, token));
    jobject tokenObj = javaObjectForIBinder(env, token);
    ScopedLocalRef<jstring> reasonObj(env, env->NewStringUTF(reason.c_str()));
    jstring reasonObj = env->NewStringUTF(reason.c_str());


    jlong newTimeout = env->CallLongMethod(mServiceObj,
    jlong newTimeout = env->CallLongMethod(mServiceObj,
                gServiceClassInfo.notifyANR, tokenObj.get(),
                gServiceClassInfo.notifyANR, tokenObj,
                reasonObj.get());
                reasonObj);
    if (checkAndClearExceptionFromCallback(env, "notifyANR")) {
    if (checkAndClearExceptionFromCallback(env, "notifyANR")) {
        newTimeout = 0; // abort dispatch
        newTimeout = 0; // abort dispatch
    } else {
    } else {
        assert(newTimeout >= 0);
        assert(newTimeout >= 0);
    }
    }


    env->DeleteLocalRef(reasonObj);
    return newTimeout;
    return newTimeout;
}
}


@@ -747,10 +748,10 @@ void NativeInputManager::notifyInputChannelBroken(const sp<IBinder>& token) {


    JNIEnv* env = jniEnv();
    JNIEnv* env = jniEnv();


    ScopedLocalRef<jobject> tokenObj(env, javaObjectForIBinder(env, token));
    jobject tokenObj = javaObjectForIBinder(env, token);
    if (tokenObj.get()) {
    if (tokenObj) {
        env->CallVoidMethod(mServiceObj, gServiceClassInfo.notifyInputChannelBroken,
        env->CallVoidMethod(mServiceObj, gServiceClassInfo.notifyInputChannelBroken,
                tokenObj.get());
                tokenObj);
        checkAndClearExceptionFromCallback(env, "notifyInputChannelBroken");
        checkAndClearExceptionFromCallback(env, "notifyInputChannelBroken");
    }
    }
}
}
@@ -764,10 +765,10 @@ void NativeInputManager::notifyFocusChanged(const sp<IBinder>& oldToken,


    JNIEnv* env = jniEnv();
    JNIEnv* env = jniEnv();


    ScopedLocalRef<jobject> oldTokenObj(env, javaObjectForIBinder(env, oldToken));
    jobject oldTokenObj = javaObjectForIBinder(env, oldToken);
    ScopedLocalRef<jobject> newTokenObj(env, javaObjectForIBinder(env, newToken));
    jobject newTokenObj = javaObjectForIBinder(env, newToken);
    env->CallVoidMethod(mServiceObj, gServiceClassInfo.notifyFocusChanged,
    env->CallVoidMethod(mServiceObj, gServiceClassInfo.notifyFocusChanged,
            oldTokenObj.get(), newTokenObj.get());
            oldTokenObj, newTokenObj);
    checkAndClearExceptionFromCallback(env, "notifyFocusChanged");
    checkAndClearExceptionFromCallback(env, "notifyFocusChanged");
}
}


@@ -1140,13 +1141,13 @@ nsecs_t NativeInputManager::interceptKeyBeforeDispatching(
        JNIEnv* env = jniEnv();
        JNIEnv* env = jniEnv();


        // Token may be null
        // Token may be null
        ScopedLocalRef<jobject> tokenObj(env, javaObjectForIBinder(env, token));
        jobject tokenObj = javaObjectForIBinder(env, token);


        jobject keyEventObj = android_view_KeyEvent_fromNative(env, keyEvent);
        jobject keyEventObj = android_view_KeyEvent_fromNative(env, keyEvent);
        if (keyEventObj) {
        if (keyEventObj) {
            jlong delayMillis = env->CallLongMethod(mServiceObj,
            jlong delayMillis = env->CallLongMethod(mServiceObj,
                    gServiceClassInfo.interceptKeyBeforeDispatching,
                    gServiceClassInfo.interceptKeyBeforeDispatching,
                    tokenObj.get(), keyEventObj, policyFlags);
                    tokenObj, keyEventObj, policyFlags);
            bool error = checkAndClearExceptionFromCallback(env, "interceptKeyBeforeDispatching");
            bool error = checkAndClearExceptionFromCallback(env, "interceptKeyBeforeDispatching");
            android_view_KeyEvent_recycle(env, keyEventObj);
            android_view_KeyEvent_recycle(env, keyEventObj);
            env->DeleteLocalRef(keyEventObj);
            env->DeleteLocalRef(keyEventObj);
@@ -1174,12 +1175,12 @@ bool NativeInputManager::dispatchUnhandledKey(const sp<IBinder>& token,
        JNIEnv* env = jniEnv();
        JNIEnv* env = jniEnv();


        // Note: tokenObj may be null.
        // Note: tokenObj may be null.
        ScopedLocalRef<jobject> tokenObj(env, javaObjectForIBinder(env, token));
        jobject tokenObj = javaObjectForIBinder(env, token);
        jobject keyEventObj = android_view_KeyEvent_fromNative(env, keyEvent);
        jobject keyEventObj = android_view_KeyEvent_fromNative(env, keyEvent);
        if (keyEventObj) {
        if (keyEventObj) {
            jobject fallbackKeyEventObj = env->CallObjectMethod(mServiceObj,
            jobject fallbackKeyEventObj = env->CallObjectMethod(mServiceObj,
                    gServiceClassInfo.dispatchUnhandledKey,
                    gServiceClassInfo.dispatchUnhandledKey,
                    tokenObj.get(), keyEventObj, policyFlags);
                    tokenObj, keyEventObj, policyFlags);
            if (checkAndClearExceptionFromCallback(env, "dispatchUnhandledKey")) {
            if (checkAndClearExceptionFromCallback(env, "dispatchUnhandledKey")) {
                fallbackKeyEventObj = nullptr;
                fallbackKeyEventObj = nullptr;
            }
            }
@@ -1224,9 +1225,8 @@ void NativeInputManager::onPointerDownOutsideFocus(const sp<IBinder>& touchedTok
    ATRACE_CALL();
    ATRACE_CALL();
    JNIEnv* env = jniEnv();
    JNIEnv* env = jniEnv();


    ScopedLocalRef<jobject> touchedTokenObj(env, javaObjectForIBinder(env, touchedToken));
    jobject touchedTokenObj = javaObjectForIBinder(env, touchedToken);
    env->CallVoidMethod(mServiceObj, gServiceClassInfo.onPointerDownOutsideFocus,
    env->CallVoidMethod(mServiceObj, gServiceClassInfo.onPointerDownOutsideFocus, touchedTokenObj);
            touchedTokenObj.get());
    checkAndClearExceptionFromCallback(env, "onPointerDownOutsideFocus");
    checkAndClearExceptionFromCallback(env, "onPointerDownOutsideFocus");
}
}