X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fglx%2Fxlock-gl.c;h=67d9eddffa925237b30a3725d44e5a5564ffba18;hb=82c5080773aae5e72ec155327c075775e023d2ee;hp=0256cf0b7c9f0b0f1fde0e6778ae14672a8d0ce1;hpb=278c59e14c53fd412b734e699bd4f314f766f804;p=xscreensaver diff --git a/hacks/glx/xlock-gl.c b/hacks/glx/xlock-gl.c index 0256cf0b..67d9eddf 100644 --- a/hacks/glx/xlock-gl.c +++ b/hacks/glx/xlock-gl.c @@ -19,6 +19,7 @@ #include "xlockmoreI.h" #include +#include #include /* Gag -- we use this to turn X errors from glXCreateContext() into @@ -97,3 +98,42 @@ init_GL(ModeInfo * mi) return ptr; } } + + + + +/* clear away any lingering error codes */ +void +clear_gl_error (void) +{ + while (glGetError() != GL_NO_ERROR) + ; +} + +/* report a GL error. */ +void +check_gl_error (const char *type) +{ + char buf[100]; + GLenum i; + const char *e; + switch ((i = glGetError())) { + case GL_NO_ERROR: return; + case GL_INVALID_ENUM: e = "invalid enum"; break; + case GL_INVALID_VALUE: e = "invalid value"; break; + case GL_INVALID_OPERATION: e = "invalid operation"; break; + case GL_STACK_OVERFLOW: e = "stack overflow"; break; + case GL_STACK_UNDERFLOW: e = "stack underflow"; break; + case GL_OUT_OF_MEMORY: e = "out of memory"; break; +#ifdef GL_TABLE_TOO_LARGE_EXT + case GL_TABLE_TOO_LARGE_EXT: e = "table too large"; break; +#endif +#ifdef GL_TEXTURE_TOO_LARGE_EXT + case GL_TEXTURE_TOO_LARGE_EXT: e = "texture too large"; break; +#endif + default: + e = buf; sprintf (buf, "unknown error %d", (int) i); break; + } + fprintf (stderr, "%s: %s error: %s\n", progname, type, e); + exit (1); +}