summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/glapi/glapi.c61
-rw-r--r--src/mesa/glapi/glapi.h10
-rw-r--r--src/mesa/main/dispatch.c18
3 files changed, 76 insertions, 13 deletions
diff --git a/src/mesa/glapi/glapi.c b/src/mesa/glapi/glapi.c
index 9c40ce8e4de..8d31afb01db 100644
--- a/src/mesa/glapi/glapi.c
+++ b/src/mesa/glapi/glapi.c
@@ -1,8 +1,8 @@
-/* $Id: glapi.c,v 1.42 2000/05/24 17:53:30 brianp Exp $ */
+/* $Id: glapi.c,v 1.43 2000/09/05 20:17:37 brianp Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 3.3
+ * Version: 3.5
*
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
*
@@ -49,6 +49,9 @@
#include "glapitable.h"
#include "glthread.h"
+#if defined(TRACE)
+#include "types.h"
+#endif
/* This is used when thread safety is disabled */
struct _glapi_table *_glapi_Dispatch = (struct _glapi_table *) __glapi_noop_table;
@@ -167,6 +170,10 @@ _glapi_get_context(void)
void
_glapi_set_dispatch(struct _glapi_table *dispatch)
{
+#if defined(TRACE)
+ GLcontext * ctx;
+#endif
+
if (!dispatch) {
/* use the no-op functions */
dispatch = (struct _glapi_table *) __glapi_noop_table;
@@ -178,14 +185,36 @@ _glapi_set_dispatch(struct _glapi_table *dispatch)
#endif
#if defined(THREADS)
+#if defined(TRACE)
+ ctx = (GLcontext *)_glthread_GetTSD(&ContextTSD);
+ if (ctx->TraceCtx->traceEnabled == GL_TRUE) {
+ _glthread_SetTSD(&DispatchTSD, (void*) ctx->TraceDispatch);
+ if (ThreadSafe)
+ _glapi_Dispatch = NULL;
+ else
+ _glapi_Dispatch = ctx->TraceDispatch;
+ } else {
+ _glthread_SetTSD(&DispatchTSD, (void*) dispatch);
+ if (ThreadSafe)
+ _glapi_Dispatch = NULL;
+ else
+ _glapi_Dispatch = dispatch;
+ }
+#else
_glthread_SetTSD(&DispatchTSD, (void*) dispatch);
if (ThreadSafe)
_glapi_Dispatch = NULL;
else
_glapi_Dispatch = dispatch;
+#endif /*TRACE*/
+#else /*THREADS*/
+#if defined(TRACE)
+ ctx = (GLcontext *)_glthread_GetTSD(&ContextTSD);
+ _glapi_Dispatch = ctx->TraceDispatch;
#else
_glapi_Dispatch = dispatch;
-#endif
+#endif /*TRACE*/
+#endif /*THREADS*/
}
@@ -210,6 +239,32 @@ _glapi_get_dispatch(void)
}
+#if defined(TRACE)
+struct _glapi_table *
+_glapi_get_true_dispatch(void)
+{
+ GLcontext* ctx;
+
+#if defined(THREADS)
+ if (ThreadSafe) {
+ ctx = (GLcontext *) _glthread_GetTSD(&ContextTSD);
+ assert(ctx);
+ assert(ctx->CurrentDispatch);
+ return ctx->CurrentDispatch;
+ }
+ else {
+ assert(_glapi_Context);
+ assert(((GLcontext *)_glapi_Context)->CurrentDispatch);
+ return ((GLcontext *)_glapi_Context)->CurrentDispatch;
+ }
+#else
+ assert(_glapi_Context);
+ assert(((GLcontext *)_glapi_Context)->CurrentDispatch);
+ return ((GLcontext *)_glapi_Context)->CurrentDispatch;
+#endif
+}
+#endif /* TRACE */
+
/*
* Return size of dispatch table struct as number of functions (or
diff --git a/src/mesa/glapi/glapi.h b/src/mesa/glapi/glapi.h
index 2b545b48887..2a56c77cec0 100644
--- a/src/mesa/glapi/glapi.h
+++ b/src/mesa/glapi/glapi.h
@@ -1,8 +1,8 @@
-/* $Id: glapi.h,v 1.14 2000/01/28 20:17:42 brianp Exp $ */
+/* $Id: glapi.h,v 1.15 2000/09/05 20:17:37 brianp Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 3.3
+ * Version: 3.5
*
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
*
@@ -59,6 +59,12 @@ extern struct _glapi_table *
_glapi_get_dispatch(void);
+#if defined(TRACE)
+extern struct _glapi_table *
+_glapi_get_true_dispatch(void);
+#endif
+
+
extern GLuint
_glapi_get_dispatch_table_size(void);
diff --git a/src/mesa/main/dispatch.c b/src/mesa/main/dispatch.c
index 048ad16169e..a2198cb15f0 100644
--- a/src/mesa/main/dispatch.c
+++ b/src/mesa/main/dispatch.c
@@ -1,8 +1,8 @@
-/* $Id: dispatch.c,v 1.15 2000/02/02 19:34:08 brianp Exp $ */
+/* $Id: dispatch.c,v 1.16 2000/09/05 20:17:37 brianp Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 3.3
+ * Version: 3.5
*
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
*
@@ -64,6 +64,7 @@
#ifdef DEBUG
+#if 0
static int
trace(void)
{
@@ -72,26 +73,27 @@ trace(void)
trace = getenv("MESA_TRACE") ? 1 : 0;
return trace > 0;
}
+#endif
#define F stderr
#define DISPATCH(FUNC, ARGS, MESSAGE) \
const struct _glapi_table *dispatch; \
dispatch = _glapi_Dispatch ? _glapi_Dispatch : _glapi_get_dispatch();\
- if (trace()) { \
- fprintf MESSAGE; \
- fprintf(F, "\n"); \
- } \
(dispatch->FUNC) ARGS
#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \
const struct _glapi_table *dispatch; \
dispatch = _glapi_Dispatch ? _glapi_Dispatch : _glapi_get_dispatch();\
+ return (dispatch->FUNC) ARGS
+
+#if 0
+ /* From both macros above... */
if (trace()) { \
fprintf MESSAGE; \
fprintf(F, "\n"); \
- } \
- return (dispatch->FUNC) ARGS
+ }
+#endif
#else