summaryrefslogtreecommitdiffstats
path: root/core/jni
diff options
context:
space:
mode:
authorJaikumar Ganesh <jaikumar@google.com>2010-06-03 16:50:57 -0700
committerJaikumar Ganesh <jaikumar@google.com>2010-06-03 16:59:01 -0700
commita7c0bdc4e46301530c89c67ec3ce6ae8df7260d7 (patch)
tree680563b1bb97a2b0ec85849fe9178d4c73cd9c79 /core/jni
parentc87d5849f22d805b3dde8f70f60ddfadfc7c7b9d (diff)
downloadframeworks_base-a7c0bdc4e46301530c89c67ec3ce6ae8df7260d7.zip
frameworks_base-a7c0bdc4e46301530c89c67ec3ce6ae8df7260d7.tar.gz
frameworks_base-a7c0bdc4e46301530c89c67ec3ce6ae8df7260d7.tar.bz2
Delete local references to avoid reference table overflow.
Change-Id: I2218b97647e381bfe6d329b1b6134bb76c1832b6
Diffstat (limited to 'core/jni')
-rw-r--r--core/jni/android_server_BluetoothA2dpService.cpp9
-rw-r--r--core/jni/android_server_BluetoothEventLoop.cpp18
2 files changed, 21 insertions, 6 deletions
diff --git a/core/jni/android_server_BluetoothA2dpService.cpp b/core/jni/android_server_BluetoothA2dpService.cpp
index cf53a06..8c795af 100644
--- a/core/jni/android_server_BluetoothA2dpService.cpp
+++ b/core/jni/android_server_BluetoothA2dpService.cpp
@@ -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);
}
diff --git a/core/jni/android_server_BluetoothEventLoop.cpp b/core/jni/android_server_BluetoothEventLoop.cpp
index 259cc01..01b6711 100644
--- a/core/jni/android_server_BluetoothEventLoop.cpp
+++ b/core/jni/android_server_BluetoothEventLoop.cpp
@@ -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