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

Commit ec840d14 authored by Steven Moreland's avatar Steven Moreland Committed by android-build-merger
Browse files

Merge "Cleanup hwbinder getService code." am: 9be24a30

am: 4ede371d

Change-Id: Ia0f3f88d8881f89cec6939dbb44d7dbbb8da9a7f
parents cb818003 4ede371d
Loading
Loading
Loading
Loading
+18 −16
Original line number Diff line number Diff line
@@ -302,6 +302,14 @@ static jobject JHwBinder_native_getService(
        return NULL;
    }

    auto manager = hardware::defaultServiceManager();

    if (manager == nullptr) {
        LOG(ERROR) << "Could not get hwservicemanager.";
        signalExceptionForError(env, UNKNOWN_ERROR, true /* canThrowRemoteException */);
        return NULL;
    }

    const char *ifaceName = env->GetStringUTFChars(ifaceNameObj, NULL);
    if (ifaceName == NULL) {
        return NULL; // XXX exception already pending?
@@ -312,32 +320,26 @@ static jobject JHwBinder_native_getService(
        return NULL; // XXX exception already pending?
    }

    LOG(INFO) << "looking for service '"
              << serviceName
              << "'";

    auto manager = hardware::defaultServiceManager();

    if (manager == nullptr) {
        LOG(ERROR) << "Could not get hwservicemanager.";
        signalExceptionForError(env, UNKNOWN_ERROR, true /* canThrowRemoteException */);
        return NULL;
    }
    LOG(INFO) << "Looking for service "
              << ifaceName
              << "/"
              << serviceName;

    Return<sp<hidl::base::V1_0::IBase>> ret = manager->get(ifaceName, serviceName);

    env->ReleaseStringUTFChars(ifaceNameObj, ifaceName);
    ifaceName = NULL;
    env->ReleaseStringUTFChars(serviceNameObj, serviceName);
    serviceName = NULL;

    if (!ret.isOk()) {
        signalExceptionForError(env, UNKNOWN_ERROR, true /* canThrowRemoteException */);
        return NULL;
    }

    sp<hardware::IBinder> service = hardware::toBinder<
            hidl::base::V1_0::IBase, hidl::base::V1_0::BpHwBase>(ret);

    env->ReleaseStringUTFChars(ifaceNameObj, ifaceName);
    ifaceName = NULL;
    env->ReleaseStringUTFChars(serviceNameObj, serviceName);
    serviceName = NULL;

    if (service == NULL) {
        signalExceptionForError(env, NAME_NOT_FOUND);
        return NULL;