Need to include glthread.h in glapi.h, not glapi.c so that GET_CURRENT_CONTEXT

is properly defined.  Fixes long-standing, but unnoticed thread safety failure.
Also, updated comments.
This commit is contained in:
Brian Paul
2006-03-15 20:31:50 +00:00
parent 30655c211c
commit e660690985
2 changed files with 15 additions and 16 deletions

View File

@@ -54,7 +54,6 @@
#include "glapi.h" #include "glapi.h"
#include "glapioffsets.h" #include "glapioffsets.h"
#include "glapitable.h" #include "glapitable.h"
#include "glthread.h"
/***** BEGIN NO-OP DISPATCH *****/ /***** BEGIN NO-OP DISPATCH *****/

View File

@@ -1,8 +1,8 @@
/* /*
* Mesa 3-D graphics library * Mesa 3-D graphics library
* Version: 6.3 * Version: 6.5
* *
* Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
* *
* Permission is hereby granted, free of charge, to any person obtaining a * Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"), * copy of this software and associated documentation files (the "Software"),
@@ -47,9 +47,12 @@
#include "GL/gl.h" #include "GL/gl.h"
#include "glapitable.h" #include "glapitable.h"
#include "glthread.h"
typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...); typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...);
#if defined(USE_MGL_NAMESPACE) #if defined(USE_MGL_NAMESPACE)
#define _glapi_set_dispatch _mglapi_set_dispatch #define _glapi_set_dispatch _mglapi_set_dispatch
#define _glapi_get_dispatch _mglapi_get_dispatch #define _glapi_get_dispatch _mglapi_get_dispatch
@@ -59,6 +62,11 @@ typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...);
#define _glapi_Dispatch _mglapi_Dispatch #define _glapi_Dispatch _mglapi_Dispatch
#endif #endif
/**
** Define the GET_CURRENT_CONTEXT() macro.
** \param C local variable which will hold the current context.
**/
#if defined (GLX_USE_TLS) #if defined (GLX_USE_TLS)
const extern void *_glapi_Context; const extern void *_glapi_Context;
@@ -74,19 +82,6 @@ extern __thread void * _glapi_tls_Context
extern void *_glapi_Context; extern void *_glapi_Context;
extern struct _glapi_table *_glapi_Dispatch; extern struct _glapi_table *_glapi_Dispatch;
/**
* Macro for declaration and fetching the current context.
*
* \param C local variable which will hold the current context.
*
* It should be used in the variable declaration area of a function:
* \code
* ...
* {
* GET_CURRENT_CONTEXT(ctx);
* ...
* \endcode
*/
# ifdef THREADS # ifdef THREADS
# define GET_CURRENT_CONTEXT(C) GLcontext *C = (GLcontext *) (_glapi_Context ? _glapi_Context : _glapi_get_context()) # define GET_CURRENT_CONTEXT(C) GLcontext *C = (GLcontext *) (_glapi_Context ? _glapi_Context : _glapi_get_context())
# else # else
@@ -95,6 +90,11 @@ extern struct _glapi_table *_glapi_Dispatch;
#endif /* defined (GLX_USE_TLS) */ #endif /* defined (GLX_USE_TLS) */
/**
** GL API public functions
**/
extern void extern void
_glapi_noop_enable_warnings(GLboolean enable); _glapi_noop_enable_warnings(GLboolean enable);