Make sure we have a native Surface in nContextSetSurface.
I was seeing a problem running RenderScript in the system process
because mNativeSurface was null. This works around the problem
by forcing the native surface to be created when we set the surface.
Change-Id: I3abf6cef1b049864e4e063669b6df547de008c93
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
index 3624678..b2e8dd9 100644
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ b/graphics/jni/android_renderscript_RenderScript.cpp
@@ -37,6 +37,7 @@
#include "jni.h"
#include "JNIHelp.h"
#include "android_runtime/AndroidRuntime.h"
+#include "android_runtime/android_view_Surface.h"
#include <RenderScript.h>
#include <RenderScriptEnv.h>
@@ -184,9 +185,7 @@
if (wnd == NULL) {
} else {
- jclass surface_class = _env->FindClass("android/view/Surface");
- jfieldID surfaceFieldID = _env->GetFieldID(surface_class, ANDROID_VIEW_SURFACE_JNI_ID, "I");
- window = (Surface*)_env->GetIntField(wnd, surfaceFieldID);
+ window = (Surface*) android_Surface_getNativeWindow(_env, wnd).get();
}
rsContextSetSurface(con, width, height, window);