From http://www.jwz.org/xscreensaver/xscreensaver-5.31.tar.gz
[xscreensaver] / android / XScreenSaverGLView.c
1 #include <android/log.h>
2 #include "screenhackI.h"
3 #include "xlockmoreI.h"
4
5 #if defined(USE_IPHONE) || (HAVE_ANDROID)
6 # include "jwzgles.h"
7 #else
8 # include <OpenGL/OpenGL.h>
9 #endif
10
11 /* used by the OpenGL screen savers
12  */
13 extern GLXContext *init_GL (ModeInfo *);
14 extern void glXSwapBuffers (Display *, Window);
15 extern void glXMakeCurrent (Display *, Window, GLXContext);
16 extern void clear_gl_error (void);
17 extern void check_gl_error (const char *type);
18
19 /* Does nothing - prepareContext already did the work.
20  */
21 void
22 glXMakeCurrent (Display *dpy, Window window, GLXContext context)
23 {
24 }
25
26
27 /* clear away any lingering error codes */
28 void
29 clear_gl_error (void)
30 {
31   while (glGetError() != GL_NO_ERROR)
32     ;
33 }
34
35
36 // needs to be implemented in Android...
37 /* Copy the back buffer to the front buffer.
38  */
39 void
40 glXSwapBuffers (Display *dpy, Window window)
41 {
42 }
43
44
45 /* Called by OpenGL savers using the XLockmore API.
46  */
47 GLXContext *
48 init_GL (ModeInfo *mi)
49 {
50   Window win = mi->window;
51 }
52
53 /* report a GL error. */
54 void
55 check_gl_error (const char *type)
56 {
57   char buf[100];
58   GLenum i;
59   const char *e;
60   switch ((i = glGetError())) {
61     case GL_NO_ERROR: return;
62     case GL_INVALID_ENUM:          e = "invalid enum";      break;
63     case GL_INVALID_VALUE:         e = "invalid value";     break;
64     case GL_INVALID_OPERATION:     e = "invalid operation"; break;
65     case GL_STACK_OVERFLOW:        e = "stack overflow";    break;
66     case GL_STACK_UNDERFLOW:       e = "stack underflow";   break;
67     case GL_OUT_OF_MEMORY:         e = "out of memory";     break;
68 #ifdef GL_TABLE_TOO_LARGE_EXT
69     case GL_TABLE_TOO_LARGE_EXT:   e = "table too large";   break;
70 #endif
71 #ifdef GL_TEXTURE_TOO_LARGE_EXT
72     case GL_TEXTURE_TOO_LARGE_EXT: e = "texture too large"; break;
73 #endif
74     default:
75       e = buf; sprintf (buf, "unknown GL error %d", (int) i); break;
76   }
77   __android_log_write(ANDROID_LOG_ERROR, "xscreensaver", e);
78 }
79