X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=flavors%2Fgl%2Fsource%2Fglwrap_funcs.c;h=13847558bdeb637c02e98c6497fa194e31e37abf;hb=a832996c884a0e0acc9a38ba4dd258edb75ec7af;hp=7fc5adfddf815d108ca98d15565f1970e0248725;hpb=61fdcb975ab928dc2b56269e0602f3d8a66e726d;p=gldbg.git diff --git a/flavors/gl/source/glwrap_funcs.c b/flavors/gl/source/glwrap_funcs.c index 7fc5adf..1384755 100644 --- a/flavors/gl/source/glwrap_funcs.c +++ b/flavors/gl/source/glwrap_funcs.c @@ -1,22 +1,17 @@ -/* $Id$ - -This file is part of gldbg -Copyright © 2010 Mikko Rasa, Mikkosoft Productions -Distributed under the GPL -*/ - #include #include "arraysize.h" +#include "breakpoint.h" #include "functions.h" #include "glwrap.h" #include "opengl.h" +#include "packet.h" -int in_begin_block = 0; -GLenum cur_error = GL_NO_ERROR; +static int in_begin_block = 0; +static GLenum cur_error = GL_NO_ERROR; static void check_error() { - GLenum (*orig_glGetError)() = 0; + static GLenum (*orig_glGetError)() = NULL; GLenum code; if(in_begin_block) @@ -28,9 +23,11 @@ static void check_error() code = orig_glGetError(); if(code!=GL_NO_ERROR) { - begin_packet(FUNC_GLDERROR); - write_int(code); - send_packet(); + GlPacket *pkt; + + pkt = packet_begin(FUNC_GLDERROR); + packet_write_int(pkt, code); + packet_send(pkt, get_out_fd()); if(cur_error==GL_NO_ERROR) cur_error = code; @@ -39,27 +36,31 @@ static void check_error() void APIENTRY glBegin(GLenum mode) { - static void (*orig)(GLenum); + static void (*orig)(GLenum) = NULL; + GlPacket *pkt; + if(!orig) orig = glsym("glBegin"); orig(mode); - begin_packet(FUNC_GLBEGIN); - write_int(mode); - send_packet(); + pkt = packet_begin(FUNC_GLBEGIN); + packet_write_int(pkt, mode); + packet_send(pkt, get_out_fd()); in_begin_block = 1; } void APIENTRY glEnd() { - static void (*orig)(); + static void (*orig)() = NULL; + GlPacket *pkt; + if(!orig) orig = glsym("glEnd"); orig(); - begin_packet(FUNC_GLEND); - send_packet(); + pkt = packet_begin(FUNC_GLEND); + packet_send(pkt, get_out_fd()); in_begin_block = 0; check_error(); @@ -68,6 +69,7 @@ void APIENTRY glEnd() GLenum APIENTRY glGetError() { GLenum ret = GL_NO_ERROR; + GlPacket *pkt; if(in_begin_block) { @@ -80,9 +82,9 @@ GLenum APIENTRY glGetError() cur_error = GL_NO_ERROR; } - begin_packet(FUNC_GLGETERROR); - write_int(ret); - send_packet(); + pkt = packet_begin(FUNC_GLGETERROR); + packet_write_int(pkt, ret); + packet_send(pkt, get_out_fd()); return ret; } @@ -91,6 +93,7 @@ void (*glXGetProcAddress(const GLubyte *procname))(void) { void *handle = 0; void (*ret)() = 0; + GlPacket *pkt; if(glsym((const char *)procname)) { @@ -98,10 +101,10 @@ void (*glXGetProcAddress(const GLubyte *procname))(void) ret = dlsym(handle, (const char *)procname); } - begin_packet(FUNC_GLXGETPROCADDRESS); - write_string((const char *)procname); - write_pointer(ret); - send_packet(); + pkt = packet_begin(FUNC_GLXGETPROCADDRESS); + packet_write_string(pkt, (const char *)procname); + packet_write_pointer(pkt, ret); + packet_send(pkt, get_out_fd()); return ret; }