diff options
| author | 2023-07-10 11:09:18 +0000 | |
|---|---|---|
| committer | 2023-07-10 11:09:18 +0000 | |
| commit | 5be3efe8f2e2c4a07922bdddf4f1a650fe88fb23 (patch) | |
| tree | db6bc71cf1daf0a2a2327e824c38265b6d16da16 | |
| parent | abb2b89baff47ed10aafae149aea2f100b83eb20 (diff) | |
| parent | d25574f3df6577b40e41fee9cc54d2ca4c7c71fb (diff) | |
Merge "Do not share key mappings with JNI object" into sc-dev am: 4a45e9c435 am: 77cbfcd9a8 am: c6952e05d1 am: b3bb4cfe8a am: d25574f3df
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23785419
Change-Id: Idfeef4c7614e5cbee85a87293ceca63411273346
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | core/jni/android_view_InputDevice.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/core/jni/android_view_InputDevice.cpp b/core/jni/android_view_InputDevice.cpp index 9cc72437a023..f7c770e0bffb 100644 --- a/core/jni/android_view_InputDevice.cpp +++ b/core/jni/android_view_InputDevice.cpp @@ -42,6 +42,13 @@ jobject android_view_InputDevice_create(JNIEnv* env, const InputDeviceInfo& devi return NULL; } + // b/274058082: Pass a copy of the key character map to avoid concurrent + // access + std::shared_ptr<KeyCharacterMap> map = deviceInfo.getKeyCharacterMap(); + if (map != nullptr) { + map = std::make_shared<KeyCharacterMap>(*map); + } + ScopedLocalRef<jstring> descriptorObj(env, env->NewStringUTF(deviceInfo.getIdentifier().descriptor.c_str())); if (!descriptorObj.get()) { @@ -49,8 +56,8 @@ jobject android_view_InputDevice_create(JNIEnv* env, const InputDeviceInfo& devi } ScopedLocalRef<jobject> kcmObj(env, - android_view_KeyCharacterMap_create(env, deviceInfo.getId(), - deviceInfo.getKeyCharacterMap())); + android_view_KeyCharacterMap_create(env, deviceInfo.getId(), + map)); if (!kcmObj.get()) { return NULL; } |