diff -r 854be117f6a5 -r c6043ea9b06a javauis/m3g_qt/src/jni/graphics3d.inl --- a/javauis/m3g_qt/src/jni/graphics3d.inl Thu Jun 17 22:39:53 2010 +0100 +++ b/javauis/m3g_qt/src/jni/graphics3d.inl Fri Jun 18 16:25:31 2010 +0100 @@ -20,7 +20,7 @@ * Must be executed in UI thread */ JNIEXPORT jboolean JNICALL Java_javax_microedition_m3g_Graphics3D__1isProperRenderer -(JNIEnv* aEnv, jclass) +(JNIEnv* /*aEnv*/, jclass) { EGLContext ctx; EGLConfig config; @@ -59,7 +59,7 @@ info = glGetString(GL_RENDERER); // get the renderer string // check if "MBX" substring is found - if (strstr((const char *)info, "MBX")) + if ( !info || strstr((const char *)info, "MBX")) { // HW renderer detected. // If "MBX" HW is detected we must reset alpha for mutable off-screen @@ -93,10 +93,8 @@ // Fetch the native peer of our target object Java::GFX::WindowSurface* wsurf = reinterpret_cast(aSurfaceHandle); - - int caps = Java::GFX::SwImage | Java::GFX::PBuffer; - QPaintDevice* surface = wsurf->bind(caps); - + + wsurf->bind(Java::GFX::WsTypeQtImage | Java::GFX::WsTypeEglSurface); jboolean isImageTarget = false; /*cmidGraphics->IsImageTarget();*/ M3G_DO_LOCK @@ -120,13 +118,23 @@ switch (wsurf->getType()) { - case Java::GFX::SwImage: + case Java::GFX::WsTypeQtImage: { - QImage* bitmap = static_cast(surface); + QImage* bitmap = wsurf->getQtImage(); M3GPixelFormat format = mapQtPixelformat(bitmap->format()); m3gBindMemoryTarget((M3GRenderContext)aCtx, bitmap->bits(), (M3Guint)bitmap->width(), (M3Guint)bitmap->height(), format, (M3Guint)(bitmap->width() * 4), NULL); break; } + case Java::GFX::WsTypeEglSurface: + { + if( eglQueryAPI() != EGL_OPENGL_ES_API ) + { + eglMakeCurrent( EGL_DEFAULT_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT ); + eglBindAPI( EGL_OPENGL_ES_API ); + } + m3gBindEGLSurfaceTarget((M3GRenderContext)aCtx, wsurf->getEglSurface() ); + break; + } default: M3G_RAISE_EXCEPTION(aEnv, "java/lang/IllegalArgumentException"); break; @@ -212,7 +220,7 @@ */ JNIEXPORT void JNICALL Java_javax_microedition_m3g_Graphics3D__1releaseGraphics (JNIEnv* aEnv, jclass, jint aHandle, - jint aSurfaceHandle, jboolean aIsImageTarget, jboolean aIsProperRenderer) + jint aSurfaceHandle, jboolean /*aIsImageTarget*/, jboolean /*aIsProperRenderer*/) { M3G_DO_LOCK @@ -221,7 +229,7 @@ // Release used target surface Java::GFX::WindowSurface* surf = reinterpret_cast(aSurfaceHandle); surf->release(); - + /* CMIDGraphics *cmidGraphics = MIDUnhandObject(aGraphicsHandle); @@ -715,7 +723,7 @@ } JNIEXPORT jboolean JNICALL Java_javax_microedition_m3g_Graphics3D__1isAASupported -(JNIEnv* aEnv, jclass, jint aM3g) +(JNIEnv* /*aEnv*/, jclass, jint aM3g) { M3Gbool aaSupport = M3G_FALSE;