From c8483dc2831dc37d93a36804022f6b064f5962ea Mon Sep 17 00:00:00 2001 From: marha Date: Fri, 8 Nov 2013 11:47:30 +0100 Subject: Solved compilation and link problems after last merge --- xorg-server/glx/indirect_program.c | 49 +++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 16 deletions(-) mode change 100644 => 100755 xorg-server/glx/indirect_program.c (limited to 'xorg-server/glx/indirect_program.c') diff --git a/xorg-server/glx/indirect_program.c b/xorg-server/glx/indirect_program.c old mode 100644 new mode 100755 index 35cb0e861..17204c17d --- a/xorg-server/glx/indirect_program.c +++ b/xorg-server/glx/indirect_program.c @@ -41,15 +41,28 @@ #include "unpack.h" #include "indirect_size_get.h" #include "indirect_dispatch.h" +#include "glapitable.h" +#include "glapi.h" +#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); /** * Handle both types of glGetProgramString calls. + * + * This single function handles both \c glGetProgramStringARB and + * \c glGetProgramStringNV. The dispatch offsets for the functions to use + * for \c glGetProgramivARB and \c glGetProgramStringARB are passed in by the + * caller. These can be the offsets of either the ARB versions or the NV + * versions. */ -static int +int DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte * pc, - PFNGLGETPROGRAMIVARBPROC get_programiv, - PFNGLGETPROGRAMSTRINGARBPROC get_program_string, - Bool do_swap) + unsigned get_programiv_offset, + unsigned get_program_string_offset, Bool do_swap) { xGLXVendorPrivateWithReplyReq *const req = (xGLXVendorPrivateWithReplyReq *) pc; @@ -76,13 +89,19 @@ DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte * pc, /* The value of the GL_PROGRAM_LENGTH_ARB and GL_PROGRAM_LENGTH_NV * enumerants is the same. */ - get_programiv(target, GL_PROGRAM_LENGTH_ARB, &compsize); + 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(); - get_program_string(target, pname, (GLubyte *) answer); + CALL_by_offset(GET_DISPATCH(), + (void (GLAPIENTRYP) (GLuint, GLenum, GLubyte *)), + get_program_string_offset, + (target, pname, (GLubyte *) answer)); } if (__glXErrorOccured()) { @@ -105,29 +124,27 @@ DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte * pc, int __glXDisp_GetProgramStringARB(struct __GLXclientStateRec *cl, GLbyte * pc) { - return DoGetProgramString(cl, pc, glGetProgramivARB, - glGetProgramStringARB, False); + return DoGetProgramString(cl, pc, _gloffset_GetProgramivARB, + _gloffset_GetProgramStringARB, False); } int __glXDispSwap_GetProgramStringARB(struct __GLXclientStateRec *cl, GLbyte * pc) { - return DoGetProgramString(cl, pc, glGetProgramivARB, - glGetProgramStringARB, True); + return DoGetProgramString(cl, pc, _gloffset_GetProgramivARB, + _gloffset_GetProgramStringARB, True); } int __glXDisp_GetProgramStringNV(struct __GLXclientStateRec *cl, GLbyte * pc) { - return DoGetProgramString(cl, pc, (PFNGLGETPROGRAMIVARBPROC)glGetProgramivNV, - (PFNGLGETPROGRAMSTRINGARBPROC)glGetProgramStringNV, - False); + return DoGetProgramString(cl, pc, _gloffset_GetProgramivNV, + _gloffset_GetProgramStringNV, False); } int __glXDispSwap_GetProgramStringNV(struct __GLXclientStateRec *cl, GLbyte * pc) { - return DoGetProgramString(cl, pc, (PFNGLGETPROGRAMIVARBPROC)glGetProgramivNV, - (PFNGLGETPROGRAMSTRINGARBPROC)glGetProgramStringNV, - True); + return DoGetProgramString(cl, pc, _gloffset_GetProgramivNV, + _gloffset_GetProgramStringNV, True); } -- cgit v1.2.3