Android: on rare occasion, prevent Android_JNI_GetNativeWindow() from crashing

If Java getNativeSurface() returns null, then ANativeWindow_fromSurface() would crash().
This commit is contained in:
Sylvain Becker 2018-12-30 22:44:25 +01:00
parent 1e22fc1513
commit 03b0e1dee0

View File

@ -951,13 +951,15 @@ static void LocalReferenceHolder_Cleanup(struct LocalReferenceHolder *refholder)
ANativeWindow* Android_JNI_GetNativeWindow(void) ANativeWindow* Android_JNI_GetNativeWindow(void)
{ {
ANativeWindow* anw; ANativeWindow *anw = NULL;
jobject s; jobject s;
JNIEnv *env = Android_JNI_GetEnv(); JNIEnv *env = Android_JNI_GetEnv();
s = (*env)->CallStaticObjectMethod(env, mActivityClass, midGetNativeSurface); s = (*env)->CallStaticObjectMethod(env, mActivityClass, midGetNativeSurface);
anw = ANativeWindow_fromSurface(env, s); if (s) {
(*env)->DeleteLocalRef(env, s); anw = ANativeWindow_fromSurface(env, s);
(*env)->DeleteLocalRef(env, s);
}
return anw; return anw;
} }