Merge "Do not share key mappings with JNI object" into sc-dev

This commit is contained in:
Josep del Río
2023-07-08 07:21:43 +00:00
committed by Android (Google) Code Review

View File

@@ -42,6 +42,13 @@ jobject android_view_InputDevice_create(JNIEnv* env, const InputDeviceInfo& devi
return NULL; 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, ScopedLocalRef<jstring> descriptorObj(env,
env->NewStringUTF(deviceInfo.getIdentifier().descriptor.c_str())); env->NewStringUTF(deviceInfo.getIdentifier().descriptor.c_str()));
if (!descriptorObj.get()) { if (!descriptorObj.get()) {
@@ -50,7 +57,7 @@ jobject android_view_InputDevice_create(JNIEnv* env, const InputDeviceInfo& devi
ScopedLocalRef<jobject> kcmObj(env, ScopedLocalRef<jobject> kcmObj(env,
android_view_KeyCharacterMap_create(env, deviceInfo.getId(), android_view_KeyCharacterMap_create(env, deviceInfo.getId(),
deviceInfo.getKeyCharacterMap())); map));
if (!kcmObj.get()) { if (!kcmObj.get()) {
return NULL; return NULL;
} }