X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglwrap.c;h=0a22c3c1ce4b6677c0bb66cdb10d559294fbe160;hb=6475e8951e1901b247f5d1d1dd9fcfc1e77e163a;hp=59bf1fb12cedc3333a77abf1e1a044edf26edc22;hpb=be68706254c62406d4924fffa7f43d2b1c17f52e;p=gldbg.git diff --git a/source/glwrap.c b/source/glwrap.c index 59bf1fb..0a22c3c 100644 --- a/source/glwrap.c +++ b/source/glwrap.c @@ -10,7 +10,9 @@ Distributed under the GPL #include #include #include +#include #include +#include #include "functions.h" static inline void *glsym(const char *sym) @@ -237,6 +239,32 @@ static inline int mapsize(GLenum target) return 1; } +GLenum cur_error = GL_NO_ERROR; + +static void check_error() +{ + GLenum (*orig_glGetError)() = 0; + GLenum code; + if(!orig_glGetError) + orig_glGetError = glsym("glGetError"); + code = orig_glGetError(); + if(code!=GL_NO_ERROR) + { + begin_packet(FUNC_GLDERROR); + write_int(code); + send_packet(); + if(cur_error==GL_NO_ERROR) + cur_error = code; + } +} + +GLenum APIENTRY glGetError() +{ + GLenum ret = cur_error; + cur_error = GL_NO_ERROR; + return ret; +} + void (*glXGetProcAddress(const GLubyte *procname))(void) { void *handle = dlopen(NULL, RTLD_LAZY);