summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Josep del Río <joseprio@google.com> 2023-07-10 11:09:18 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2023-07-10 11:09:18 +0000
commit5be3efe8f2e2c4a07922bdddf4f1a650fe88fb23 (patch)
treedb6bc71cf1daf0a2a2327e824c38265b6d16da16
parentabb2b89baff47ed10aafae149aea2f100b83eb20 (diff)
parentd25574f3df6577b40e41fee9cc54d2ca4c7c71fb (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.cpp11
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;
}