From 57a62b3e6f4445c7db680eb8c72e9a6fbd747d01 Mon Sep 17 00:00:00 2001 From: Chavi Weingarten Date: Mon, 18 Mar 2024 20:02:54 +0000 Subject: Address ASurfaceControlInputReceiver comments Test: ASurfaceControlInputReceiverTest Bug: 329903619 Change-Id: I9051c506ce217bdc6ea941794de06f9e3e026a66 --- core/jni/OWNERS | 1 + core/jni/android_view_WindowManagerGlobal.cpp | 8 ++++---- native/android/surface_control_input_receiver.cpp | 2 ++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/core/jni/OWNERS b/core/jni/OWNERS index 3aca751edb0d..2a4f062478bd 100644 --- a/core/jni/OWNERS +++ b/core/jni/OWNERS @@ -27,6 +27,7 @@ per-file android_view_VelocityTracker.* = file:/services/core/java/com/android/s # WindowManager per-file android_graphics_BLASTBufferQueue.cpp = file:/services/core/java/com/android/server/wm/OWNERS per-file android_view_Surface* = file:/services/core/java/com/android/server/wm/OWNERS +per-file android_view_WindowManagerGlobal.cpp = file:/services/core/java/com/android/server/wm/OWNERS per-file android_window_* = file:/services/core/java/com/android/server/wm/OWNERS # Resources diff --git a/core/jni/android_view_WindowManagerGlobal.cpp b/core/jni/android_view_WindowManagerGlobal.cpp index b03ac88a36ca..abc621d8dc90 100644 --- a/core/jni/android_view_WindowManagerGlobal.cpp +++ b/core/jni/android_view_WindowManagerGlobal.cpp @@ -48,7 +48,7 @@ std::shared_ptr createInputChannel( surfaceControlObj(env, android_view_SurfaceControl_getJavaSurfaceControl(env, surfaceControl)); - jobject clientTokenObj = javaObjectForIBinder(env, clientToken); + ScopedLocalRef clientTokenObj(env, javaObjectForIBinder(env, clientToken)); ScopedLocalRef clientInputTransferTokenObj( env, android_window_InputTransferToken_getJavaInputTransferToken(env, @@ -57,7 +57,7 @@ std::shared_ptr createInputChannel( inputChannelObj(env, env->CallStaticObjectMethod(gWindowManagerGlobal.clazz, gWindowManagerGlobal.createInputChannel, - clientTokenObj, + clientTokenObj.get(), hostInputTransferTokenObj.get(), surfaceControlObj.get(), clientInputTransferTokenObj.get())); @@ -68,9 +68,9 @@ std::shared_ptr createInputChannel( void removeInputChannel(const sp& clientToken) { JNIEnv* env = AndroidRuntime::getJNIEnv(); - jobject clientTokenObj(javaObjectForIBinder(env, clientToken)); + ScopedLocalRef clientTokenObj(env, javaObjectForIBinder(env, clientToken)); env->CallStaticObjectMethod(gWindowManagerGlobal.clazz, gWindowManagerGlobal.removeInputChannel, - clientTokenObj); + clientTokenObj.get()); } int register_android_view_WindowManagerGlobal(JNIEnv* env) { diff --git a/native/android/surface_control_input_receiver.cpp b/native/android/surface_control_input_receiver.cpp index da0defd9fd17..d178abc2c3d7 100644 --- a/native/android/surface_control_input_receiver.cpp +++ b/native/android/surface_control_input_receiver.cpp @@ -45,6 +45,8 @@ public: mClientToken(clientToken), mInputTransferToken(inputTransferToken) {} + // The InputConsumer does not keep the InputReceiver alive so the receiver is cleared once the + // owner releases it. ~InputReceiver() { remove(); } -- cgit v1.2.3-59-g8ed1b