summaryrefslogtreecommitdiffstats
path: root/core/jni/android_server_BluetoothEventLoop.cpp
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/android_server_BluetoothEventLoop.cpp
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/android_server_BluetoothEventLoop.cpp')
-rw-r--r--core/jni/android_server_BluetoothEventLoop.cpp18
1 files changed, 14 insertions, 4 deletions
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