From: Emilian Peev Date: Tue, 5 Jun 2018 16:52:16 +0000 (+0100) Subject: media: Check window connect status in ImageWriter X-Git-Tag: android-x86-9.0-r1~91^2~13^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=2adf40392e91481e793bf9d4a5ba88f2bd6477db;p=android-x86%2Fframeworks-base.git media: Check window connect status in ImageWriter ImageWriter clients could pass invalid or already connected surface during initialization. Check the status after trying to connect to the producer interface and raise an exception if necessary. Bug: 80086132 Test: Camera CTS Change-Id: I46810885046a3b89ea18510574c22db27e812a9c --- diff --git a/media/jni/android_media_ImageWriter.cpp b/media/jni/android_media_ImageWriter.cpp index f8f7a90b3937..031e373241cb 100644 --- a/media/jni/android_media_ImageWriter.cpp +++ b/media/jni/android_media_ImageWriter.cpp @@ -252,7 +252,14 @@ static jlong ImageWriter_init(JNIEnv* env, jobject thiz, jobject weakThiz, jobje * after disconnect. MEDIA or CAMERA are treated the same internally. The producer listener * will be cleared after disconnect call. */ - producer->connect(/*api*/NATIVE_WINDOW_API_CAMERA, /*listener*/ctx); + res = producer->connect(/*api*/NATIVE_WINDOW_API_CAMERA, /*listener*/ctx); + if (res != OK) { + ALOGE("%s: Connecting to surface producer interface failed: %s (%d)", + __FUNCTION__, strerror(-res), res); + jniThrowRuntimeException(env, "Failed to connect to native window"); + return 0; + } + jlong nativeCtx = reinterpret_cast(ctx.get()); // Get the dimension and format of the producer.