Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4defe8b6 authored by Yu-Han Yang's avatar Yu-Han Yang
Browse files

Call DeleteLocalRef in GNSS JNI

Bug: 157380700
Test: manual
Change-Id: Ia5e5a84e1b17887b440c2c83894f0a8cfc50faf4
Merged-In: Ia5e5a84e1b17887b440c2c83894f0a8cfc50faf4
parent 12df9e3d
Loading
Loading
Loading
Loading
+23 −3
Original line number Diff line number Diff line
@@ -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)
        : 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();
    jstring jstringName = env->NewStringUTF(name.c_str());
    env->CallVoidMethod(mCallbacksObj, method_setGnssHardwareModelName, jstringName);
    if (jstringName) {
        env->DeleteLocalRef(jstringName);
    }
    checkAndClearExceptionFromCallback(env, __FUNCTION__);

    return Void();
@@ -719,6 +726,12 @@ Return<void> GnssCallback::gnssSvStatusCbImpl(const T& svStatus) {
            static_cast<jint>(listSize), svidWithFlagArray, cn0Array, elevArray, azimArray,
            carrierFreqArray);

    env->DeleteLocalRef(svidWithFlagArray);
    env->DeleteLocalRef(cn0Array);
    env->DeleteLocalRef(elevArray);
    env->DeleteLocalRef(azimArray);
    env->DeleteLocalRef(carrierFreqArray);

    checkAndClearExceptionFromCallback(env, __FUNCTION__);
    return Void();
}
@@ -1107,13 +1120,18 @@ void GnssMeasurementCallback::translateSingleGnssMeasurement
    JNIEnv* env = getJniEnv();
    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.
    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.
    SET(ConstellationType, static_cast<int32_t>(measurement_V2_0->constellation));

    if (codeType) {
        env->DeleteLocalRef(codeType);
    }
}

template<class T>
@@ -1187,7 +1205,9 @@ jobjectArray GnssMeasurementCallback::translateAllGnssMeasurements(JNIEnv* env,
    for (uint16_t i = 0; i < count; ++i) {
        JavaObject object(env, class_gnssMeasurement, method_gnssMeasurementCtor);
        translateSingleGnssMeasurement(&(measurements[i]), object);
        env->SetObjectArrayElement(gnssMeasurementArray, i, object.get());
        jobject gnssMeasurement = object.get();
        env->SetObjectArrayElement(gnssMeasurementArray, i, gnssMeasurement);
        env->DeleteLocalRef(gnssMeasurement);
    }

    return gnssMeasurementArray;