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

Commit a7c0bdc4 authored by Jaikumar Ganesh's avatar Jaikumar Ganesh
Browse files

Delete local references to avoid reference table overflow.

Change-Id: I2218b97647e381bfe6d329b1b6134bb76c1832b6
parent c87d5849
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -256,10 +256,12 @@ DBusHandlerResult a2dp_event_filter(DBusMessage *msg, JNIEnv *env) {
                    parse_property_change(env, msg, (Properties *)&sink_properties,
                                sizeof(sink_properties) / sizeof(Properties));
        const char *c_path = dbus_message_get_path(msg);
        jstring path = env->NewStringUTF(c_path);
        env->CallVoidMethod(nat->me,
                            method_onSinkPropertyChanged,
                            env->NewStringUTF(c_path),
                            path,
                            str_array);
        env->DeleteLocalRef(path);
        result = DBUS_HANDLER_RESULT_HANDLED;
        return result;
    } else {
@@ -292,10 +294,13 @@ void onConnectSinkResult(DBusMessage *msg, void *user, void *n) {
        result = JNI_FALSE;
    }
    LOGV("... Device Path = %s, result = %d", path, result);

    jstring jPath = env->NewStringUTF(path);
    env->CallVoidMethod(nat->me,
                        method_onConnectSinkResult,
                        env->NewStringUTF(path),
                        jPath,
                        result);
    env->DeleteLocalRef(jPath);
    free(user);
}

+14 −4
Original line number Diff line number Diff line
@@ -1061,6 +1061,8 @@ void onCreatePairedDeviceResult(DBusMessage *msg, void *user, void *n) {
    DBusError err;
    dbus_error_init(&err);
    JNIEnv *env;
    jstring addr;

    nat->vm->GetEnv((void**)&env, nat->envVer);

    LOGV("... address = %s", address);
@@ -1109,10 +1111,12 @@ void onCreatePairedDeviceResult(DBusMessage *msg, void *user, void *n) {
        }
    }

    addr = env->NewStringUTF(address);
    env->CallVoidMethod(nat->me,
                        method_onCreatePairedDeviceResult,
                        env->NewStringUTF(address),
                        addr,
                        result);
    env->DeleteLocalRef(addr);
done:
    dbus_error_free(&err);
    free(user);
@@ -1139,10 +1143,12 @@ void onCreateDeviceResult(DBusMessage *msg, void *user, void *n) {
        }
        LOG_AND_FREE_DBUS_ERROR(&err);
    }
    jstring addr = env->NewStringUTF(address);
    env->CallVoidMethod(nat->me,
                        method_onCreateDeviceResult,
                        env->NewStringUTF(address),
                        addr,
                        result);
    env->DeleteLocalRef(addr);
    free(user);
}

@@ -1163,10 +1169,12 @@ void onDiscoverServicesResult(DBusMessage *msg, void *user, void *n) {
        LOG_AND_FREE_DBUS_ERROR(&err);
        result = JNI_FALSE;
    }
    jstring jPath = env->NewStringUTF(path);
    env->CallVoidMethod(nat->me,
                        method_onDiscoverServicesResult,
                        env->NewStringUTF(path),
                        jPath,
                        result);
    env->DeleteLocalRef(jPath);
    free(user);
}

@@ -1194,10 +1202,12 @@ void onGetDeviceServiceChannelResult(DBusMessage *msg, void *user, void *n) {
    }

done:
    jstring addr = env->NewStringUTF(address);
    env->CallVoidMethod(nat->me,
                        method_onGetDeviceServiceChannelResult,
                        env->NewStringUTF(address),
                        addr,
                        channel);
    env->DeleteLocalRef(addr);
    free(user);
}
#endif