diff options
author | Brian Paul <[email protected]> | 1999-11-27 21:40:28 +0000 |
---|---|---|
committer | Brian Paul <[email protected]> | 1999-11-27 21:40:28 +0000 |
commit | 59577b577d03d696594f53e7a76a016b3f76da4b (patch) | |
tree | 51b7774277160997a3299f8fe7e0b6b580d2aa5b | |
parent | 91bcefaa49cd707acc6a6407cfb0e987f8a08350 (diff) |
added _mesa_init_no_op_table()
-rw-r--r-- | src/mesa/main/dispatch.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/src/mesa/main/dispatch.c b/src/mesa/main/dispatch.c index 4ab62ae5206..e6c91b97744 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; |