From: Siarhei Vishniakou Date: Fri, 10 May 2019 17:27:13 +0000 (+0000) Subject: Revert "Changed local refs in JNI to ScopedLocalRef" X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=eb7e150432d74f163488ad1e13f490fedf5c67d6;p=android-x86%2Fframeworks-base.git Revert "Changed local refs in JNI to ScopedLocalRef" This reverts commit 335025f23958ceb36b67d2380de1382cfb5d346c. Reason for revert: b/132437551 Bug: 132437551 Change-Id: Ie7d615b2e721d2db7c9a8b772212d6efcc12d991 --- diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp index 00671c1401dc..204a1ea977e7 100644 --- a/services/core/jni/com_android_server_input_InputManagerService.cpp +++ b/services/core/jni/com_android_server_input_InputManagerService.cpp @@ -724,18 +724,19 @@ nsecs_t NativeInputManager::notifyANR(const sp& inputApp JNIEnv* env = jniEnv(); - ScopedLocalRef tokenObj(env, javaObjectForIBinder(env, token)); - ScopedLocalRef reasonObj(env, env->NewStringUTF(reason.c_str())); + jobject tokenObj = javaObjectForIBinder(env, token); + jstring reasonObj = env->NewStringUTF(reason.c_str()); jlong newTimeout = env->CallLongMethod(mServiceObj, - gServiceClassInfo.notifyANR, tokenObj.get(), - reasonObj.get()); + gServiceClassInfo.notifyANR, tokenObj, + reasonObj); if (checkAndClearExceptionFromCallback(env, "notifyANR")) { newTimeout = 0; // abort dispatch } else { assert(newTimeout >= 0); } + env->DeleteLocalRef(reasonObj); return newTimeout; } @@ -747,10 +748,10 @@ void NativeInputManager::notifyInputChannelBroken(const sp& token) { JNIEnv* env = jniEnv(); - ScopedLocalRef tokenObj(env, javaObjectForIBinder(env, token)); - if (tokenObj.get()) { + jobject tokenObj = javaObjectForIBinder(env, token); + if (tokenObj) { env->CallVoidMethod(mServiceObj, gServiceClassInfo.notifyInputChannelBroken, - tokenObj.get()); + tokenObj); checkAndClearExceptionFromCallback(env, "notifyInputChannelBroken"); } } @@ -764,10 +765,10 @@ void NativeInputManager::notifyFocusChanged(const sp& oldToken, JNIEnv* env = jniEnv(); - ScopedLocalRef oldTokenObj(env, javaObjectForIBinder(env, oldToken)); - ScopedLocalRef newTokenObj(env, javaObjectForIBinder(env, newToken)); + jobject oldTokenObj = javaObjectForIBinder(env, oldToken); + jobject newTokenObj = javaObjectForIBinder(env, newToken); env->CallVoidMethod(mServiceObj, gServiceClassInfo.notifyFocusChanged, - oldTokenObj.get(), newTokenObj.get()); + oldTokenObj, newTokenObj); checkAndClearExceptionFromCallback(env, "notifyFocusChanged"); } @@ -1140,13 +1141,13 @@ nsecs_t NativeInputManager::interceptKeyBeforeDispatching( JNIEnv* env = jniEnv(); // Token may be null - ScopedLocalRef tokenObj(env, javaObjectForIBinder(env, token)); + jobject tokenObj = javaObjectForIBinder(env, token); jobject keyEventObj = android_view_KeyEvent_fromNative(env, keyEvent); if (keyEventObj) { jlong delayMillis = env->CallLongMethod(mServiceObj, gServiceClassInfo.interceptKeyBeforeDispatching, - tokenObj.get(), keyEventObj, policyFlags); + tokenObj, keyEventObj, policyFlags); bool error = checkAndClearExceptionFromCallback(env, "interceptKeyBeforeDispatching"); android_view_KeyEvent_recycle(env, keyEventObj); env->DeleteLocalRef(keyEventObj); @@ -1174,12 +1175,12 @@ bool NativeInputManager::dispatchUnhandledKey(const sp& token, JNIEnv* env = jniEnv(); // Note: tokenObj may be null. - ScopedLocalRef tokenObj(env, javaObjectForIBinder(env, token)); + jobject tokenObj = javaObjectForIBinder(env, token); jobject keyEventObj = android_view_KeyEvent_fromNative(env, keyEvent); if (keyEventObj) { jobject fallbackKeyEventObj = env->CallObjectMethod(mServiceObj, gServiceClassInfo.dispatchUnhandledKey, - tokenObj.get(), keyEventObj, policyFlags); + tokenObj, keyEventObj, policyFlags); if (checkAndClearExceptionFromCallback(env, "dispatchUnhandledKey")) { fallbackKeyEventObj = nullptr; } @@ -1224,9 +1225,8 @@ void NativeInputManager::onPointerDownOutsideFocus(const sp& touchedTok ATRACE_CALL(); JNIEnv* env = jniEnv(); - ScopedLocalRef touchedTokenObj(env, javaObjectForIBinder(env, touchedToken)); - env->CallVoidMethod(mServiceObj, gServiceClassInfo.onPointerDownOutsideFocus, - touchedTokenObj.get()); + jobject touchedTokenObj = javaObjectForIBinder(env, touchedToken); + env->CallVoidMethod(mServiceObj, gServiceClassInfo.onPointerDownOutsideFocus, touchedTokenObj); checkAndClearExceptionFromCallback(env, "onPointerDownOutsideFocus"); }