am b408f549: am d790c648: Add lost preview surface detection in the JNI layer Throws an IOException if this happens rather than crashes

Merge commit 'b408f5490b8591a2799d6b1db91e29e4b203d2bf'

* commit 'b408f5490b8591a2799d6b1db91e29e4b203d2bf':
  Add lost preview surface detection in the JNI layer
This commit is contained in:
James Dong
2010-08-12 13:30:57 -07:00
committed by Android Git Automerger

View File

@@ -318,6 +318,15 @@ android_media_MediaRecorder_prepare(JNIEnv *env, jobject thiz)
jobject surface = env->GetObjectField(thiz, fields.surface);
if (surface != NULL) {
const sp<Surface> native_surface = get_surface(env, surface);
// The application may misbehave and
// the preview surface becomes unavailable
if (native_surface.get() == 0) {
LOGE("Application lost the surface");
jniThrowException(env, "java/io/IOException", "invalid preview surface");
return;
}
LOGI("prepare: surface=%p (identity=%d)", native_surface.get(), native_surface->getIdentity());
if (process_media_recorder_call(env, mr->setPreviewSurface(native_surface), "java/lang/RuntimeException", "setPreviewSurface failed.")) {
return;