diff options
Diffstat (limited to 'core/jni')
-rw-r--r-- | core/jni/android_app_backup_FullBackup.cpp | 8 | ||||
-rw-r--r-- | core/jni/android_hardware_Camera.cpp | 39 |
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) { |