Merge "Call DeleteLocalRef in GNSS JNI" am: 17d5740fcf

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1326195

Change-Id: Icc08283b9bda7dfca42801138d3c15ef48867c10
This commit is contained in:
Treehugger Robot
2020-06-10 16:49:25 +00:00
committed by Automerger Merge Worker

View File

@@ -294,7 +294,11 @@ JavaObject::JavaObject(JNIEnv* env, jclass clazz, jmethodID defaultCtor) : env_(
JavaObject::JavaObject(JNIEnv* env, jclass clazz, jmethodID stringCtor, const char * sz_arg_1) JavaObject::JavaObject(JNIEnv* env, jclass clazz, jmethodID stringCtor, const char * sz_arg_1)
: env_(env), clazz_(clazz) { : env_(env), clazz_(clazz) {
object_ = env_->NewObject(clazz_, stringCtor, env->NewStringUTF(sz_arg_1)); jstring szArg = env->NewStringUTF(sz_arg_1);
object_ = env_->NewObject(clazz_, stringCtor, szArg);
if (szArg) {
env_->DeleteLocalRef(szArg);
}
} }
@@ -627,6 +631,9 @@ Return<void> GnssCallback::gnssNameCb(const android::hardware::hidl_string& name
JNIEnv* env = getJniEnv(); JNIEnv* env = getJniEnv();
jstring jstringName = env->NewStringUTF(name.c_str()); jstring jstringName = env->NewStringUTF(name.c_str());
env->CallVoidMethod(mCallbacksObj, method_setGnssHardwareModelName, jstringName); env->CallVoidMethod(mCallbacksObj, method_setGnssHardwareModelName, jstringName);
if (jstringName) {
env->DeleteLocalRef(jstringName);
}
checkAndClearExceptionFromCallback(env, __FUNCTION__); checkAndClearExceptionFromCallback(env, __FUNCTION__);
return Void(); return Void();
@@ -719,6 +726,12 @@ Return<void> GnssCallback::gnssSvStatusCbImpl(const T& svStatus) {
static_cast<jint>(listSize), svidWithFlagArray, cn0Array, elevArray, azimArray, static_cast<jint>(listSize), svidWithFlagArray, cn0Array, elevArray, azimArray,
carrierFreqArray); carrierFreqArray);
env->DeleteLocalRef(svidWithFlagArray);
env->DeleteLocalRef(cn0Array);
env->DeleteLocalRef(elevArray);
env->DeleteLocalRef(azimArray);
env->DeleteLocalRef(carrierFreqArray);
checkAndClearExceptionFromCallback(env, __FUNCTION__); checkAndClearExceptionFromCallback(env, __FUNCTION__);
return Void(); return Void();
} }
@@ -1107,13 +1120,18 @@ void GnssMeasurementCallback::translateSingleGnssMeasurement
JNIEnv* env = getJniEnv(); JNIEnv* env = getJniEnv();
translateSingleGnssMeasurement(&(measurement_V2_0->v1_1), object); translateSingleGnssMeasurement(&(measurement_V2_0->v1_1), object);
SET(CodeType, env->NewStringUTF(measurement_V2_0->codeType.c_str())); jstring codeType = env->NewStringUTF(measurement_V2_0->codeType.c_str());
SET(CodeType, codeType);
// Overwrite with v2_0.state since v2_0->v1_1->v1_0.state is deprecated. // Overwrite with v2_0.state since v2_0->v1_1->v1_0.state is deprecated.
SET(State, static_cast<int32_t>(measurement_V2_0->state)); SET(State, static_cast<int32_t>(measurement_V2_0->state));
// Overwrite with v2_0.constellation since v2_0->v1_1->v1_0.constellation is deprecated. // Overwrite with v2_0.constellation since v2_0->v1_1->v1_0.constellation is deprecated.
SET(ConstellationType, static_cast<int32_t>(measurement_V2_0->constellation)); SET(ConstellationType, static_cast<int32_t>(measurement_V2_0->constellation));
if (codeType) {
env->DeleteLocalRef(codeType);
}
} }
template<class T> template<class T>
@@ -1187,7 +1205,9 @@ jobjectArray GnssMeasurementCallback::translateAllGnssMeasurements(JNIEnv* env,
for (uint16_t i = 0; i < count; ++i) { for (uint16_t i = 0; i < count; ++i) {
JavaObject object(env, class_gnssMeasurement, method_gnssMeasurementCtor); JavaObject object(env, class_gnssMeasurement, method_gnssMeasurementCtor);
translateSingleGnssMeasurement(&(measurements[i]), object); translateSingleGnssMeasurement(&(measurements[i]), object);
env->SetObjectArrayElement(gnssMeasurementArray, i, object.get()); jobject gnssMeasurement = object.get();
env->SetObjectArrayElement(gnssMeasurementArray, i, gnssMeasurement);
env->DeleteLocalRef(gnssMeasurement);
} }
return gnssMeasurementArray; return gnssMeasurementArray;