From a4a91a7fe53f3c17845c24d9c8fe675c18aa12aa Mon Sep 17 00:00:00 2001 From: Siarhei Vishniakou Date: Wed, 6 May 2020 14:15:01 -0700 Subject: [PATCH] Use for injectInputEvent timeout To avoid mistakes in units when calling input api's, convert injectInputEvent timeout parameter to use std::chrono::duration. Test: atest inputflinger_tests libinput_tests inputflinger_benchmarks Bug: 143459140 Change-Id: I1eacdc16fa9b463492c052701cd3c7773686e448 --- ...droid_server_input_InputManagerService.cpp | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp index 9bc5d34c11af5..4d67e3648e576 100644 --- a/services/core/jni/com_android_server_input_InputManagerService.cpp +++ b/services/core/jni/com_android_server_input_InputManagerService.cpp @@ -1453,9 +1453,13 @@ static jint nativeInjectInputEvent(JNIEnv* env, jclass /* clazz */, return INPUT_EVENT_INJECTION_FAILED; } - return (jint) im->getInputManager()->getDispatcher()->injectInputEvent( - & keyEvent, injectorPid, injectorUid, syncMode, timeoutMillis, - uint32_t(policyFlags)); + const int32_t result = + im->getInputManager()->getDispatcher()->injectInputEvent(&keyEvent, injectorPid, + injectorUid, syncMode, + std::chrono::milliseconds( + timeoutMillis), + uint32_t(policyFlags)); + return static_cast(result); } else if (env->IsInstanceOf(inputEventObj, gMotionEventClassInfo.clazz)) { const MotionEvent* motionEvent = android_view_MotionEvent_getNativePtr(env, inputEventObj); if (!motionEvent) { @@ -1463,9 +1467,13 @@ static jint nativeInjectInputEvent(JNIEnv* env, jclass /* clazz */, return INPUT_EVENT_INJECTION_FAILED; } - return (jint) im->getInputManager()->getDispatcher()->injectInputEvent( - motionEvent, injectorPid, injectorUid, syncMode, timeoutMillis, - uint32_t(policyFlags)); + const int32_t result = + (jint)im->getInputManager() + ->getDispatcher() + ->injectInputEvent(motionEvent, injectorPid, injectorUid, syncMode, + std::chrono::milliseconds(timeoutMillis), + uint32_t(policyFlags)); + return static_cast(result); } else { jniThrowRuntimeException(env, "Invalid input event type."); return INPUT_EVENT_INJECTION_FAILED;