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:
@@ -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 *****/
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user