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

Commit bad4cd2b authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk
Browse files

Optimize getProgramList call.

Test: instrumentation
Bug: b/36863239
Change-Id: I1a15689bb812fa5db618310a2a7f2950d05da112
parent f0606b8e
Loading
Loading
Loading
Loading
+8 −6
Original line number Original line Diff line number Diff line
@@ -218,26 +218,28 @@ static jobject nativeGetProgramInformation(JNIEnv *env, jobject obj, jlong nativ
    auto halTuner11 = getHalTuner11(nativeContext);
    auto halTuner11 = getHalTuner11(nativeContext);
    if (halTuner10 == nullptr) return nullptr;
    if (halTuner10 == nullptr) return nullptr;


    V1_1::ProgramInfo halInfo;
    JavaRef<jobject> jInfo;
    Result halResult;
    Result halResult;
    Return<void> hidlResult;
    Return<void> hidlResult;
    if (halTuner11 != nullptr) {
    if (halTuner11 != nullptr) {
        hidlResult = halTuner11->getProgramInformation_1_1([&](Result result,
        hidlResult = halTuner11->getProgramInformation_1_1([&](Result result,
                const V1_1::ProgramInfo& info) {
                const V1_1::ProgramInfo& info) {
            halResult = result;
            halResult = result;
            halInfo = info;
            if (result != Result::OK) return;
            jInfo = convert::ProgramInfoFromHal(env, info);
        });
        });
    } else {
    } else {
        hidlResult = halTuner10->getProgramInformation([&](Result result,
        hidlResult = halTuner10->getProgramInformation([&](Result result,
                const V1_0::ProgramInfo& info) {
                const V1_0::ProgramInfo& info) {
            halResult = result;
            halResult = result;
            halInfo.base = info;
            if (result != Result::OK) return;
            jInfo = convert::ProgramInfoFromHal(env, info);
        });
        });
    }
    }


    if (convert::ThrowIfFailed(env, hidlResult, halResult)) return nullptr;
    if (jInfo != nullptr) return jInfo.release();

    convert::ThrowIfFailed(env, hidlResult, halResult);
    return convert::ProgramInfoFromHal(env, halInfo).release();
    return nullptr;
}
}


static bool nativeStartBackgroundScan(JNIEnv *env, jobject obj, jlong nativeContext) {
static bool nativeStartBackgroundScan(JNIEnv *env, jobject obj, jlong nativeContext) {
+12 −4
Original line number Original line Diff line number Diff line
@@ -285,19 +285,27 @@ static JavaRef<jobject> MetadataFromHal(JNIEnv *env, const hidl_vec<V1_0::MetaDa
    return jMetadata;
    return jMetadata;
}
}


JavaRef<jobject> ProgramInfoFromHal(JNIEnv *env, const V1_1::ProgramInfo &info11) {
static JavaRef<jobject> ProgramInfoFromHal(JNIEnv *env, const V1_0::ProgramInfo &info10,
        const V1_1::ProgramInfo *info11) {
    ALOGV("ProgramInfoFromHal()");
    ALOGV("ProgramInfoFromHal()");
    EnvWrapper wrap(env);
    EnvWrapper wrap(env);


    auto& info10 = info11.base;
    auto jMetadata = MetadataFromHal(env, info10.metadata);
    auto jMetadata = MetadataFromHal(env, info10.metadata);
    auto jVendorExtension = wrap(env->NewStringUTF(info11.vendorExension.c_str()));
    auto jVendorExtension = info11 ?
            wrap(env->NewStringUTF(info11->vendorExension.c_str())) : nullptr;


    return wrap(env->NewObject(gjni.ProgramInfo.clazz, gjni.ProgramInfo.cstor, info10.channel,
    return wrap(env->NewObject(gjni.ProgramInfo.clazz, gjni.ProgramInfo.cstor, info10.channel,
            info10.subChannel, info10.tuned, info10.stereo, info10.digital, info10.signalStrength,
            info10.subChannel, info10.tuned, info10.stereo, info10.digital, info10.signalStrength,
            jMetadata.get(), info11.flags, jVendorExtension.get()));
            jMetadata.get(), info11 ? info11->flags : 0, jVendorExtension.get()));
}
}


JavaRef<jobject> ProgramInfoFromHal(JNIEnv *env, const V1_0::ProgramInfo &info) {
    return ProgramInfoFromHal(env, info, nullptr);
}

JavaRef<jobject> ProgramInfoFromHal(JNIEnv *env, const V1_1::ProgramInfo &info) {
    return ProgramInfoFromHal(env, info.base, &info);
}


} // namespace convert
} // namespace convert
} // namespace radio
} // namespace radio
+1 −0
Original line number Original line Diff line number Diff line
@@ -39,6 +39,7 @@ V1_0::BandConfig BandConfigToHal(JNIEnv *env, jobject jConfig, Region &region);


V1_0::Direction DirectionToHal(bool directionDown);
V1_0::Direction DirectionToHal(bool directionDown);


JavaRef<jobject> ProgramInfoFromHal(JNIEnv *env, const V1_0::ProgramInfo &info);
JavaRef<jobject> ProgramInfoFromHal(JNIEnv *env, const V1_1::ProgramInfo &info);
JavaRef<jobject> ProgramInfoFromHal(JNIEnv *env, const V1_1::ProgramInfo &info);