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

Commit b801a513 authored by Steven Moreland's avatar Steven Moreland Committed by Gerrit Code Review
Browse files

Merge "ServiceManager: waitForService uses allowBlocking"

parents 703378f3 d247e417
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -257,7 +257,12 @@ public final class ServiceManager {
     *
     * @return {@code null} only if there are permission problems or fatal errors.
     */
    public static native IBinder waitForService(@NonNull String name);
    public static IBinder waitForService(@NonNull String name) {
        return Binder.allowBlocking(waitForServiceNative(name));
    }

    private static native IBinder waitForServiceNative(@NonNull String name);


    /**
     * Returns the specified service from the service manager, if declared.
+5 −11
Original line number Diff line number Diff line
@@ -29,11 +29,8 @@ namespace android {

// Native because we have a client-side wait in waitForService() and we do not
// want an unnecessary second copy of it.
static jobject android_os_ServiceManager_waitForService(
        JNIEnv *env,
        jclass /* clazzObj */,
static jobject android_os_ServiceManager_waitForServiceNative(JNIEnv* env, jclass /* clazzObj */,
                                                              jstring serviceNameObj) {

    const jchar* serviceName = env->GetStringCritical(serviceNameObj, nullptr);
    if (!serviceName) {
        jniThrowNullPointerException(env, nullptr);
@@ -56,11 +53,8 @@ static jobject android_os_ServiceManager_waitForService(

static const JNINativeMethod method_table[] = {
        /* name, signature, funcPtr */
    {
        "waitForService",
        "(Ljava/lang/String;)Landroid/os/IBinder;",
        (void*)android_os_ServiceManager_waitForService
    },
        {"waitForServiceNative", "(Ljava/lang/String;)Landroid/os/IBinder;",
         (void*)android_os_ServiceManager_waitForServiceNative},
};

int register_android_os_ServiceManager(JNIEnv* env) {