diff options
author | marha <marha@users.sourceforge.net> | 2012-03-26 14:23:28 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-03-26 14:23:28 +0200 |
commit | 76bcc36ed305418a3ddc5752d287ede894243e1b (patch) | |
tree | bacb320c825768471ce56f058f17ce863d592376 /xorg-server/glx/indirect_program.c | |
parent | 7d894e32566b710952c44cbc71939ad1d9e2fa8d (diff) | |
parent | 0f834b91a4768673833ab4917e87d86c237bb1a6 (diff) | |
download | vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.tar.gz vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.tar.bz2 vcxsrv-76bcc36ed305418a3ddc5752d287ede894243e1b.zip |
Merge remote-tracking branch 'origin/released'
Conflicts:
pixman/pixman/pixman-mmx.c
xorg-server/Xext/shm.c
xorg-server/Xext/syncsrv.h
xorg-server/Xext/xvmain.c
xorg-server/Xi/exevents.c
xorg-server/Xi/opendev.c
xorg-server/composite/compalloc.c
xorg-server/composite/compoverlay.c
xorg-server/dix/colormap.c
xorg-server/dix/devices.c
xorg-server/dix/dispatch.c
xorg-server/dix/dixfonts.c
xorg-server/dix/eventconvert.c
xorg-server/dix/events.c
xorg-server/dix/gc.c
xorg-server/dix/getevents.c
xorg-server/dix/main.c
xorg-server/dix/privates.c
xorg-server/dix/registry.c
xorg-server/dix/resource.c
xorg-server/exa/exa_accel.c
xorg-server/exa/exa_migration_classic.c
xorg-server/exa/exa_unaccel.c
xorg-server/fb/fb.h
xorg-server/fb/fbcopy.c
xorg-server/fb/fbpixmap.c
xorg-server/glx/dispatch.h
xorg-server/glx/glapi.h
xorg-server/glx/glapi_gentable.c
xorg-server/glx/glapitable.h
xorg-server/glx/glprocs.h
xorg-server/glx/glxcmds.c
xorg-server/glx/glxcmdsswap.c
xorg-server/glx/glxdricommon.c
xorg-server/glx/glxdriswrast.c
xorg-server/glx/glxext.c
xorg-server/glx/indirect_dispatch.c
xorg-server/glx/indirect_dispatch.h
xorg-server/glx/indirect_dispatch_swap.c
xorg-server/glx/indirect_size.h
xorg-server/glx/indirect_size_get.h
xorg-server/glx/indirect_table.c
xorg-server/glx/indirect_util.c
xorg-server/glx/rensize.c
xorg-server/glx/single2swap.c
xorg-server/glx/singlepix.c
xorg-server/glx/singlepixswap.c
xorg-server/glx/singlesize.c
xorg-server/hw/dmx/dmxinit.c
xorg-server/hw/kdrive/ephyr/ephyr.c
xorg-server/hw/kdrive/ephyr/hostx.c
xorg-server/hw/kdrive/ephyr/hostx.h
xorg-server/hw/kdrive/src/kinput.c
xorg-server/hw/xfree86/common/compiler.h
xorg-server/hw/xwin/InitInput.c
xorg-server/hw/xwin/InitOutput.c
xorg-server/hw/xwin/ddraw.h
xorg-server/hw/xwin/glx/glwrap.c
xorg-server/hw/xwin/glx/indirect.c
xorg-server/hw/xwin/glx/wgl_ext_api.h
xorg-server/hw/xwin/glx/winpriv.c
xorg-server/hw/xwin/win.h
xorg-server/hw/xwin/winallpriv.c
xorg-server/hw/xwin/winauth.c
xorg-server/hw/xwin/winclipboard.h
xorg-server/hw/xwin/winclipboardinit.c
xorg-server/hw/xwin/winclipboardthread.c
xorg-server/hw/xwin/winclipboardunicode.c
xorg-server/hw/xwin/winclipboardwndproc.c
xorg-server/hw/xwin/winclipboardwrappers.c
xorg-server/hw/xwin/winclipboardxevents.c
xorg-server/hw/xwin/wincmap.c
xorg-server/hw/xwin/winconfig.c
xorg-server/hw/xwin/wincreatewnd.c
xorg-server/hw/xwin/wincursor.c
xorg-server/hw/xwin/windialogs.c
xorg-server/hw/xwin/winengine.c
xorg-server/hw/xwin/winerror.c
xorg-server/hw/xwin/wingc.c
xorg-server/hw/xwin/wingetsp.c
xorg-server/hw/xwin/winkeybd.c
xorg-server/hw/xwin/winkeybd.h
xorg-server/hw/xwin/winlayouts.h
xorg-server/hw/xwin/winmisc.c
xorg-server/hw/xwin/winmonitors.c
xorg-server/hw/xwin/winmouse.c
xorg-server/hw/xwin/winmsg.c
xorg-server/hw/xwin/winmsg.h
xorg-server/hw/xwin/winmultiwindowclass.c
xorg-server/hw/xwin/winmultiwindowicons.c
xorg-server/hw/xwin/winmultiwindowshape.c
xorg-server/hw/xwin/winmultiwindowwindow.c
xorg-server/hw/xwin/winmultiwindowwm.c
xorg-server/hw/xwin/winmultiwindowwndproc.c
xorg-server/hw/xwin/winnativegdi.c
xorg-server/hw/xwin/winpfbdd.c
xorg-server/hw/xwin/winpixmap.c
xorg-server/hw/xwin/winpolyline.c
xorg-server/hw/xwin/winprefs.c
xorg-server/hw/xwin/winprocarg.c
xorg-server/hw/xwin/winregistry.c
xorg-server/hw/xwin/winscrinit.c
xorg-server/hw/xwin/winsetsp.c
xorg-server/hw/xwin/winshaddd.c
xorg-server/hw/xwin/winshadddnl.c
xorg-server/hw/xwin/winshadgdi.c
xorg-server/hw/xwin/wintrayicon.c
xorg-server/hw/xwin/winwin32rootless.c
xorg-server/hw/xwin/winwin32rootlesswindow.c
xorg-server/hw/xwin/winwin32rootlesswndproc.c
xorg-server/hw/xwin/winwindow.c
xorg-server/hw/xwin/winwindow.h
xorg-server/hw/xwin/winwindowswm.c
xorg-server/hw/xwin/winwndproc.c
xorg-server/include/callback.h
xorg-server/include/dixstruct.h
xorg-server/include/misc.h
xorg-server/include/os.h
xorg-server/include/scrnintstr.h
xorg-server/mi/micmap.c
xorg-server/mi/miinitext.c
xorg-server/mi/mioverlay.c
xorg-server/mi/misprite.c
xorg-server/mi/mivaltree.c
xorg-server/mi/miwindow.c
xorg-server/miext/damage/damage.c
xorg-server/miext/rootless/rootlessGC.c
xorg-server/miext/rootless/rootlessWindow.c
xorg-server/os/WaitFor.c
xorg-server/os/access.c
xorg-server/os/connection.c
xorg-server/os/io.c
xorg-server/os/log.c
xorg-server/os/osinit.c
xorg-server/os/utils.c
xorg-server/os/xdmcp.c
xorg-server/os/xprintf.c
xorg-server/os/xstrans.c
xorg-server/render/mipict.c
xorg-server/xkb/xkbActions.c
xorg-server/xkb/xkbInit.c
xorg-server/xkeyboard-config/compat/default.in
Diffstat (limited to 'xorg-server/glx/indirect_program.c')
-rw-r--r-- | xorg-server/glx/indirect_program.c | 131 |
1 files changed, 66 insertions, 65 deletions
diff --git a/xorg-server/glx/indirect_program.c b/xorg-server/glx/indirect_program.c index 18b7a1526..629fb7d3f 100644 --- a/xorg-server/glx/indirect_program.c +++ b/xorg-server/glx/indirect_program.c @@ -49,9 +49,9 @@ #include "glthread.h" #include "dispatch.h" -static int DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte *pc, - unsigned get_programiv_offset, unsigned get_program_string_offset, - Bool do_swap); +static int DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte * pc, + unsigned get_programiv_offset, + unsigned get_program_string_offset, Bool do_swap); /** * Handle both types of glGetProgramString calls. @@ -62,91 +62,92 @@ static int DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte *pc, * caller. These can be the offsets of either the ARB versions or the NV * versions. */ -int DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte *pc, - unsigned get_programiv_offset, - unsigned get_program_string_offset, - Bool do_swap) +int +DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte * pc, + unsigned get_programiv_offset, + unsigned get_program_string_offset, Bool do_swap) { - xGLXVendorPrivateWithReplyReq * const req = - (xGLXVendorPrivateWithReplyReq *) pc; + xGLXVendorPrivateWithReplyReq *const req = + (xGLXVendorPrivateWithReplyReq *) pc; int error; - __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, & error); + __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error); ClientPtr client = cl->client; - pc += __GLX_VENDPRIV_HDR_SIZE; if (cx != NULL) { - GLenum target; - GLenum pname; - GLint compsize = 0; - char *answer = NULL, answerBuffer[200]; - - if (do_swap) { - target = (GLenum) bswap_32(*(int *)(pc + 0)); - pname = (GLenum) bswap_32(*(int *)(pc + 4)); - } - else { - target = *(GLenum *)(pc + 0); - pname = *(GLuint *)(pc + 4); - } - - /* The value of the GL_PROGRAM_LENGTH_ARB and GL_PROGRAM_LENGTH_NV - * enumerants is the same. - */ - CALL_by_offset(GET_DISPATCH(), - (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), - get_programiv_offset, - (target, GL_PROGRAM_LENGTH_ARB, &compsize)); - - if (compsize != 0) { - __GLX_GET_ANSWER_BUFFER(answer,cl,compsize,1); - __glXClearErrorOccured(); - - CALL_by_offset(GET_DISPATCH(), - (void (GLAPIENTRYP)(GLuint, GLenum, GLubyte *)), - get_program_string_offset, - (target, pname, (GLubyte *)answer)); - } - - if (__glXErrorOccured()) { - __GLX_BEGIN_REPLY(0); - __GLX_SEND_HEADER(); - } else { - __GLX_BEGIN_REPLY(compsize); - ((xGLXGetTexImageReply *)&__glXReply)->width = compsize; - __GLX_SEND_HEADER(); - __GLX_SEND_VOID_ARRAY(compsize); - } - - error = Success; + GLenum target; + GLenum pname; + GLint compsize = 0; + char *answer = NULL, answerBuffer[200]; + + if (do_swap) { + target = (GLenum) bswap_32(*(int *) (pc + 0)); + pname = (GLenum) bswap_32(*(int *) (pc + 4)); + } + else { + target = *(GLenum *) (pc + 0); + pname = *(GLuint *) (pc + 4); + } + + /* The value of the GL_PROGRAM_LENGTH_ARB and GL_PROGRAM_LENGTH_NV + * enumerants is the same. + */ + CALL_by_offset(GET_DISPATCH(), + (void (GLAPIENTRYP) (GLuint, GLenum, GLint *)), + get_programiv_offset, + (target, GL_PROGRAM_LENGTH_ARB, &compsize)); + + if (compsize != 0) { + __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1); + __glXClearErrorOccured(); + + CALL_by_offset(GET_DISPATCH(), + (void (GLAPIENTRYP) (GLuint, GLenum, GLubyte *)), + get_program_string_offset, + (target, pname, (GLubyte *) answer)); + } + + if (__glXErrorOccured()) { + __GLX_BEGIN_REPLY(0); + __GLX_SEND_HEADER(); + } + else { + __GLX_BEGIN_REPLY(compsize); + ((xGLXGetTexImageReply *) & __glXReply)->width = compsize; + __GLX_SEND_HEADER(); + __GLX_SEND_VOID_ARRAY(compsize); + } + + error = Success; } return error; } -int __glXDisp_GetProgramStringARB(struct __GLXclientStateRec *cl, GLbyte *pc) +int +__glXDisp_GetProgramStringARB(struct __GLXclientStateRec *cl, GLbyte * pc) { return DoGetProgramString(cl, pc, _gloffset_GetProgramivARB, - _gloffset_GetProgramStringARB, False); + _gloffset_GetProgramStringARB, False); } - -int __glXDispSwap_GetProgramStringARB(struct __GLXclientStateRec *cl, GLbyte *pc) +int +__glXDispSwap_GetProgramStringARB(struct __GLXclientStateRec *cl, GLbyte * pc) { return DoGetProgramString(cl, pc, _gloffset_GetProgramivARB, - _gloffset_GetProgramStringARB, True); + _gloffset_GetProgramStringARB, True); } - -int __glXDisp_GetProgramStringNV(struct __GLXclientStateRec *cl, GLbyte *pc) +int +__glXDisp_GetProgramStringNV(struct __GLXclientStateRec *cl, GLbyte * pc) { return DoGetProgramString(cl, pc, _gloffset_GetProgramivNV, - _gloffset_GetProgramStringNV, False); + _gloffset_GetProgramStringNV, False); } - -int __glXDispSwap_GetProgramStringNV(struct __GLXclientStateRec *cl, GLbyte *pc) +int +__glXDispSwap_GetProgramStringNV(struct __GLXclientStateRec *cl, GLbyte * pc) { return DoGetProgramString(cl, pc, _gloffset_GetProgramivNV, - _gloffset_GetProgramStringNV, True); + _gloffset_GetProgramStringNV, True); } |