X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=jwxyz%2Fjwxyz-android.h;h=49586d009e8a0181d672b495fed0877575d303be;hb=39809ded547bdbb08207d3e514950425215b4410;hp=493f456a5c55ef5213a5e1aec1af4fdc68e151a4;hpb=d6b0217f2417bd19187f0ebc389d6c5c2233b11c;p=xscreensaver diff --git a/jwxyz/jwxyz-android.h b/jwxyz/jwxyz-android.h index 493f456a..49586d00 100644 --- a/jwxyz/jwxyz-android.h +++ b/jwxyz/jwxyz-android.h @@ -16,13 +16,37 @@ #include "../hacks/fps.h" #include +/* Native EGL is Android 2.3/API 9. EGL in Java is available from API 1. */ #include +#include #include /* Keep synchronized with check-configs.pl and jwxyz.java. */ #define API_XLIB 0 #define API_GL 1 +struct jwxyz_Drawable { + enum { WINDOW, PIXMAP } type; + XRectangle frame; + union { + /* JWXYZ_GL */ + EGLSurface egl_surface; + GLuint texture; /* If this is 0, it's the default framebuffer. */ + + /* JWXYZ_IMAGE */ + void *image_data; + }; + union { + struct { + struct running_hack *rh; + int last_mouse_x, last_mouse_y; + } window; + struct { + int depth; + } pixmap; + }; +}; + struct running_hack { struct xscreensaver_function_table *xsft; jint api; @@ -33,43 +57,47 @@ struct running_hack { JNIEnv *jni_env; jobject jobject; + Bool jwxyz_gl_p; + + /* JWXYZ_GL */ + EGLContext egl_ctx; + EGLSurface egl_surface; EGLDisplay egl_display; + GLint fb_default; + EGLConfig egl_config; - EGLContext egl_window_ctx, egl_xlib_ctx; + + PFNGLBINDFRAMEBUFFEROESPROC glBindFramebufferOES; + PFNGLFRAMEBUFFERTEXTURE2DOESPROC glFramebufferTexture2DOES; + + struct jwxyz_Drawable frontbuffer; + GC copy_gc; + Bool gl_fbo_p, frontbuffer_p; + GLuint fb_pixmap; + Drawable current_drawable; + + /* JWXYZ_IMAGE */ + ANativeWindow *native_window; + Bool ignore_rotation_p; + jwzgles_state *gles_state; + unsigned long frame_count; Bool initted_p; struct event_queue *event_queue; }; -struct jwxyz_Drawable { - enum { WINDOW, PIXMAP } type; - XRectangle frame; - EGLSurface egl_surface; - union { - struct { - struct running_hack *rh; - int last_mouse_x, last_mouse_y; - } window; - struct { - int depth; - } pixmap; - }; -}; - - -extern void prepare_context (struct running_hack *rh); - // Methods of the Java class org.jwz.jwxyz that are implemented in C. JNIEXPORT void JNICALL Java_org_jwz_xscreensaver_jwxyz_nativeInit (JNIEnv *, jobject thiz, - jstring jhack, jint api, + jstring jhack, jobject defaults, - jint w, jint h); + jint w, jint h, + jobject jni_surface); JNIEXPORT void JNICALL Java_org_jwz_xscreensaver_jwxyz_nativeResize (JNIEnv *, jobject thiz, @@ -81,19 +109,6 @@ Java_org_jwz_xscreensaver_jwxyz_nativeRender (JNIEnv *, jobject thiz); JNIEXPORT void JNICALL Java_org_jwz_xscreensaver_jwxyz_nativeDone (JNIEnv *, jobject thiz); -JNIEXPORT void JNICALL -Java_org_jwz_xscreensaver_jwxyz_allnativeSettings (JNIEnv *, jobject thiz, - jstring jhack, - jstring hackPref, - jint draw, jstring key); - -JNIEXPORT jboolean JNICALL -Java_org_jwz_xscreensaver_jwxyz_ignoreRotation (JNIEnv *, jobject thiz); - -JNIEXPORT jboolean JNICALL -Java_org_jwz_xscreensaver_jwxyz_suppressRotationAnimation (JNIEnv *, - jobject thiz); - JNIEXPORT void JNICALL Java_org_jwz_xscreensaver_jwxyz_sendButtonEvent (JNIEnv *, jobject thiz, int x, int y, jboolean down);