X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglwrap.funcs.t;h=e1395ad1d4c8c3edeea46febdd1eb75b79107625;hb=a832996c884a0e0acc9a38ba4dd258edb75ec7af;hp=59bdb47b216e5e71506731bb4c0d2c0b63b2c8ae;hpb=7c57338619688bc07f394ad82f75471aefbecc59;p=gldbg.git diff --git a/source/glwrap.funcs.t b/source/glwrap.funcs.t index 59bdb47..e1395ad 100644 --- a/source/glwrap.funcs.t +++ b/source/glwrap.funcs.t @@ -1,31 +1,48 @@ -# $Id$ +!handcode glBegin +!handcode glEnd !handcode glGetError !handcode glXGetProcAddress !handcode glXGetProcAddressARB +!handcode eglGetProcAddress wl('%s APIENTRY %s(%s)', ret.ctype, func.name, ", ".join([p.ctype+" "+p.name for p in params])) wl('{') -wl(' static %s (*orig)(%s);', ret.ctype, ", ".join([p.ctype for p in params])) +wl(' static %s (*orig)(%s) = NULL;', ret.ctype, ", ".join([p.ctype for p in params])) +wl(' GlPacket *pkt;') if ret.ctype!='void': wl(' %s ret;', ret.ctype) wl(' if(!orig)') wl(' orig = glsym("%s");', func.name) -w(' ') -if ret.ctype!='void': - w('ret = ') -wl('orig(%s);', ", ".join([p.name for p in params])) -wl(' begin_packet(FUNC_%s);', func.name.upper()) -if ret.ctype!='void': - wl(' write_%s(ret);', ret.io[0]) +wl(' tracepoint(FUNC_%s, BREAK_CALL);', func.name.upper()) +wl(' pkt = packet_begin(FUNC_%s);', func.name.upper()) +head_sent = False for p in params: + if p.direction=="out" and not head_sent: + wl(' packet_send_partial(pkt, get_out_fd());') + w(' ') + if ret.ctype!='void': + w('ret = ') + wl('orig(%s);', ", ".join([q.name for q in params])) + head_sent = True if p.kind=="value": - wl(' write_%s(%s);', p.io[0], p.name) + wl(' packet_write_%s(pkt, %s);', p.io[0].replace(' ', '_'), p.name) + elif p.kind=="array" and p.io and p.io[0]=="string": + wl(' packet_write_string_array(pkt, %s, %s);', p.name, p.csize) elif p.csize: - wl(' write_data(%s, %s);', p.name, p.csize) + wl(' packet_write_data(pkt, %s, %s);', p.name, p.csize) else: - wl(' write_pointer(%s);', p.name) -wl(' send_packet();') + wl(' packet_write_pointer(pkt, %s);', p.name) +if ret.ctype!='void': + if not head_sent: + wl(' packet_send_partial(pkt, get_out_fd());') + wl(' ret = orig(%s);', ", ".join([p.name for p in params])) + head_sent = True + wl(' packet_write_%s(pkt, ret);', ret.io[0].replace(' ', '_')) +wl(' packet_send(pkt, get_out_fd());') +if not head_sent: + wl(' orig(%s);', ", ".join([p.name for p in params])) if not func.name.startswith("glX"): wl(' check_error();') +wl(' tracepoint(FUNC_%s, BREAK_RETURN);', func.name.upper()) if ret.ctype!='void': wl(' return ret;') wl('}')