From 59577b577d03d696594f53e7a76a016b3f76da4b Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Sat, 27 Nov 1999 21:40:28 +0000 Subject: added _mesa_init_no_op_table() --- src/mesa/main/dispatch.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mesa/main/dispatch.c b/src/mesa/main/dispatch.c index 4ab62ae520..e6c91b9774 100644 --- a/src/mesa/main/dispatch.c +++ b/src/mesa/main/dispatch.c @@ -1,4 +1,4 @@ -/* $Id: dispatch.c,v 1.3 1999/11/12 23:38:42 brianp Exp $ */ +/* $Id: dispatch.c,v 1.4 1999/11/27 21:40:28 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -47,6 +47,7 @@ #include "feedback.h" #include "fog.h" #include "get.h" +#include "glapi.h" #include "glmisc.h" #include "imaging.h" #include "light.h" @@ -72,6 +73,28 @@ #endif + +static void +generic_noop(void) +{ +#ifdef DEBUG + gl_problem(NULL, "undefined function dispatch"); +#endif +} + + +void +_mesa_init_no_op_table(struct _glapi_table *exec) +{ + const GLuint n = _glapi_get_dispatch_table_size(); + GLuint i; + void **dispatch = (void **) exec; + for (i = 0; i < n; i++) { + dispatch[i] = (void *) generic_noop; + } +} + + /* * Initialize the given dispatch table with pointers to Mesa's * immediate-mode commands. @@ -79,6 +102,15 @@ void _mesa_init_exec_table(struct _glapi_table *exec) { + /* Check to be sure the dispatcher's table is at least as big as Mesa's. */ + const GLuint size = sizeof(struct _glapi_table) / sizeof(void *); + assert(_glapi_get_dispatch_table_size() >= size); + + + /* first initialize all dispatch slots to no-op */ + _mesa_init_no_op_table(exec); + + /* load the dispatch slots we understand */ exec->Accum = _mesa_Accum; exec->AlphaFunc = _mesa_AlphaFunc; exec->Begin = _mesa_Begin; -- cgit v1.2.3