diff -r 6d7ae91094e7 -r d93ef1df440d javauis/m3g_qt/src/jni/interface.inl --- a/javauis/m3g_qt/src/jni/interface.inl Tue Jun 22 09:54:11 2010 +0100 +++ b/javauis/m3g_qt/src/jni/interface.inl Thu Jul 22 16:31:34 2010 +0100 @@ -39,6 +39,14 @@ */ JNIEXPORT jint JNICALL Java_javax_microedition_m3g_Interface__1ctor(JNIEnv* aEnv, jclass) { + EGLDisplay oldDisplay = eglGetCurrentDisplay(); + EGLSurface oldDrawSurface = eglGetCurrentSurface(EGL_DRAW); + EGLSurface oldReadSurface = eglGetCurrentSurface(EGL_READ); + EGLContext oldContext = eglGetCurrentContext(); + EGLenum oldAPI = eglQueryAPI(); + eglMakeCurrent( EGL_DEFAULT_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT ); + eglBindAPI( EGL_OPENGL_ES_API ); + M3Gparams cs; memset(&cs, 0, sizeof(cs)); cs.mallocFunc = malloc; @@ -51,6 +59,10 @@ //jint handle = eventSource->Execute(&createInterface, &cs); jint handle = (unsigned)m3gCreateInterface(&cs); M3G_DO_UNLOCK(aEnv); + + eglMakeCurrent( EGL_DEFAULT_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT ); + eglBindAPI( oldAPI ); + eglMakeCurrent( oldDisplay, oldDrawSurface, oldReadSurface, oldContext ); return handle; }