diff options
| author | 2024-03-18 20:02:54 +0000 | |
|---|---|---|
| committer | 2024-03-18 22:44:03 +0000 | |
| commit | 57a62b3e6f4445c7db680eb8c72e9a6fbd747d01 (patch) | |
| tree | 644b994f51f0fdba541b5a9e9ab7d0317a8c1087 | |
| parent | ace5c353db4fd0ca6f30f916fbb2413dcc064854 (diff) | |
Address ASurfaceControlInputReceiver comments
Test: ASurfaceControlInputReceiverTest
Bug: 329903619
Change-Id: I9051c506ce217bdc6ea941794de06f9e3e026a66
| -rw-r--r-- | core/jni/OWNERS | 1 | ||||
| -rw-r--r-- | core/jni/android_view_WindowManagerGlobal.cpp | 8 | ||||
| -rw-r--r-- | 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<InputChannel> createInputChannel( surfaceControlObj(env, android_view_SurfaceControl_getJavaSurfaceControl(env, surfaceControl)); - jobject clientTokenObj = javaObjectForIBinder(env, clientToken); + ScopedLocalRef<jobject> clientTokenObj(env, javaObjectForIBinder(env, clientToken)); ScopedLocalRef<jobject> clientInputTransferTokenObj( env, android_window_InputTransferToken_getJavaInputTransferToken(env, @@ -57,7 +57,7 @@ std::shared_ptr<InputChannel> 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<InputChannel> createInputChannel( void removeInputChannel(const sp<IBinder>& clientToken) { JNIEnv* env = AndroidRuntime::getJNIEnv(); - jobject clientTokenObj(javaObjectForIBinder(env, clientToken)); + ScopedLocalRef<jobject> 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(); } |