summaryrefslogtreecommitdiffstats
path: root/core/jni
diff options
context:
space:
mode:
Diffstat (limited to 'core/jni')
-rw-r--r--core/jni/android_app_backup_FullBackup.cpp8
-rw-r--r--core/jni/android_hardware_Camera.cpp39
2 files changed, 18 insertions, 29 deletions
diff --git a/core/jni/android_app_backup_FullBackup.cpp b/core/jni/android_app_backup_FullBackup.cpp
index b36fa3e..6ef62a9 100644
--- a/core/jni/android_app_backup_FullBackup.cpp
+++ b/core/jni/android_app_backup_FullBackup.cpp
@@ -76,10 +76,10 @@ static int backupToTar(JNIEnv* env, jobject clazz, jstring packageNameObj,
int ret;
// Extract the various strings, allowing for null object pointers
- const char* packagenamechars = env->GetStringUTFChars(packageNameObj, NULL);
- const char* rootchars = env->GetStringUTFChars(rootpathObj, NULL);
- const char* pathchars = env->GetStringUTFChars(pathObj, NULL);
- const char* domainchars = env->GetStringUTFChars(domainObj, NULL);
+ const char* packagenamechars = (packageNameObj) ? env->GetStringUTFChars(packageNameObj, NULL) : NULL;
+ const char* rootchars = (rootpathObj) ? env->GetStringUTFChars(rootpathObj, NULL) : NULL;
+ const char* pathchars = (pathObj) ? env->GetStringUTFChars(pathObj, NULL) : NULL;
+ const char* domainchars = (domainObj) ? env->GetStringUTFChars(domainObj, NULL) : NULL;
String8 packageName(packagenamechars ? packagenamechars : "");
String8 rootpath(rootchars ? rootchars : "");
diff --git a/core/jni/android_hardware_Camera.cpp b/core/jni/android_hardware_Camera.cpp
index 884fa78..fe60381 100644
--- a/core/jni/android_hardware_Camera.cpp
+++ b/core/jni/android_hardware_Camera.cpp
@@ -234,34 +234,23 @@ void JNICameraContext::copyAndPost(JNIEnv* env, const sp<IMemory>& dataPtr, int
if (heapBase != NULL) {
const jbyte* data = reinterpret_cast<const jbyte*>(heapBase + offset);
- if (!mManualBufferMode) {
- LOGV("Allocating callback buffer");
- obj = env->NewByteArray(size);
- } else {
- switch (msgType) {
- case CAMERA_MSG_PREVIEW_FRAME: {
- obj = getCallbackBuffer(env, &mCallbackBuffers, size);
-
- if (mCallbackBuffers.isEmpty()) {
- LOGV("Out of buffers, clearing callback!");
- mCamera->setPreviewCallbackFlags(CAMERA_FRAME_CALLBACK_FLAG_NOOP);
- mManualCameraCallbackSet = false;
-
- if (obj == NULL) {
- return;
- }
- }
- break;
- }
- case CAMERA_MSG_RAW_IMAGE: {
- obj = getCallbackBuffer(env, &mRawImageCallbackBuffers, size);
- break;
- }
- default: {
- jniThrowRuntimeException(env, "Unsupported message type");
+ if (msgType == CAMERA_MSG_RAW_IMAGE) {
+ obj = getCallbackBuffer(env, &mRawImageCallbackBuffers, size);
+ } else if (msgType == CAMERA_MSG_PREVIEW_FRAME && mManualBufferMode) {
+ obj = getCallbackBuffer(env, &mCallbackBuffers, size);
+
+ if (mCallbackBuffers.isEmpty()) {
+ LOGV("Out of buffers, clearing callback!");
+ mCamera->setPreviewCallbackFlags(CAMERA_FRAME_CALLBACK_FLAG_NOOP);
+ mManualCameraCallbackSet = false;
+
+ if (obj == NULL) {
return;
}
}
+ } else {
+ LOGV("Allocating callback buffer");
+ obj = env->NewByteArray(size);
}
if (obj == NULL) {