diff options
Diffstat (limited to 'services/jni/com_android_server_InputApplicationHandle.cpp')
| -rw-r--r-- | services/jni/com_android_server_InputApplicationHandle.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/services/jni/com_android_server_InputApplicationHandle.cpp b/services/jni/com_android_server_InputApplicationHandle.cpp index 9516964..7de67d9 100644 --- a/services/jni/com_android_server_InputApplicationHandle.cpp +++ b/services/jni/com_android_server_InputApplicationHandle.cpp @@ -27,6 +27,8 @@ namespace android { static struct { jfieldID ptr; + jfieldID name; + jfieldID dispatchingTimeoutNanos; } gInputApplicationHandleClassInfo; static Mutex gHandleMutex; @@ -47,6 +49,31 @@ jobject NativeInputApplicationHandle::getInputApplicationHandleObjLocalRef(JNIEn return env->NewLocalRef(mObjWeak); } +bool NativeInputApplicationHandle::update() { + JNIEnv* env = AndroidRuntime::getJNIEnv(); + jobject obj = env->NewLocalRef(mObjWeak); + if (!obj) { + return false; + } + + jstring nameObj = jstring(env->GetObjectField(obj, + gInputApplicationHandleClassInfo.name)); + if (nameObj) { + const char* nameStr = env->GetStringUTFChars(nameObj, NULL); + name.setTo(nameStr); + env->ReleaseStringUTFChars(nameObj, nameStr); + env->DeleteLocalRef(nameObj); + } else { + name.setTo("<null>"); + } + + dispatchingTimeout = env->GetLongField(obj, + gInputApplicationHandleClassInfo.dispatchingTimeoutNanos); + + env->DeleteLocalRef(obj); + return true; +} + // --- Global functions --- @@ -113,6 +140,13 @@ int register_android_server_InputApplicationHandle(JNIEnv* env) { GET_FIELD_ID(gInputApplicationHandleClassInfo.ptr, clazz, "ptr", "I"); + GET_FIELD_ID(gInputApplicationHandleClassInfo.name, clazz, + "name", "Ljava/lang/String;"); + + GET_FIELD_ID(gInputApplicationHandleClassInfo.dispatchingTimeoutNanos, + clazz, + "dispatchingTimeoutNanos", "J"); + return 0; } |
