summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Sapountzis <gsapountzis@gmail.com>2010-03-01 04:44:02 +0200
committerGeorge Sapountzis <gsapountzis@gmail.com>2010-03-01 20:54:20 +0200
commitd41ab94d35cb47effbd2582289298be4f13c50e4 (patch)
tree01210f712026af2a1daf5cf502df33b2b154f440
parent7b454b00a4423937bd83ecff2d61ff08e6504707 (diff)
glapi.c: misc coscmetic for FreeTSD
- move out of of the dispatch/context block to after corresponding init functions - use more consistent naming with corresponding init functions - XXX use _glthread_InitTSD() vs (void)_glthread_GetTSD() in _glapi_check_multithread() XXX
-rw-r--r--src/gallium/state_trackers/wgl/stw_device.c4
-rw-r--r--src/mesa/glapi/glapi.c35
-rw-r--r--src/mesa/glapi/glapi.h8
-rw-r--r--src/mesa/glapi/glthread.c23
-rw-r--r--src/mesa/glapi/glthread.h4
5 files changed, 50 insertions, 24 deletions
diff --git a/src/gallium/state_trackers/wgl/stw_device.c b/src/gallium/state_trackers/wgl/stw_device.c
index e5fa6ac8eb4..472a2a5379a 100644
--- a/src/gallium/state_trackers/wgl/stw_device.c
+++ b/src/gallium/state_trackers/wgl/stw_device.c
@@ -47,7 +47,6 @@
#ifdef WIN32_THREADS
extern _glthread_Mutex OneTimeLock;
-extern void FreeAllTSD(void);
#endif
@@ -183,7 +182,8 @@ stw_cleanup(void)
#ifdef WIN32_THREADS
_glthread_DESTROY_MUTEX(OneTimeLock);
- FreeAllTSD();
+
+ _glapi_destroy_multithread();
#endif
#ifdef DEBUG
diff --git a/src/mesa/glapi/glapi.c b/src/mesa/glapi/glapi.c
index fe523073ca4..056abd72338 100644
--- a/src/mesa/glapi/glapi.c
+++ b/src/mesa/glapi/glapi.c
@@ -118,15 +118,6 @@ _glthread_TSD _gl_DispatchTSD; /**< Per-thread dispatch pointer */
static _glthread_TSD ContextTSD; /**< Per-thread context pointer */
-#if defined(WIN32_THREADS)
-void FreeTSD(_glthread_TSD *p);
-void FreeAllTSD(void)
-{
- FreeTSD(&_gl_DispatchTSD);
- FreeTSD(&ContextTSD);
-}
-#endif /* defined(WIN32_THREADS) */
-
#endif /* defined(THREADS) */
PUBLIC struct _glapi_table *_glapi_Dispatch = (struct _glapi_table *) __glapi_noop_table;
@@ -140,6 +131,22 @@ PUBLIC void *_glapi_Context = NULL;
#if defined(THREADS) && !defined(GLX_USE_TLS)
+void
+_glapi_init_multithread(void)
+{
+ _glthread_InitTSD(&_gl_DispatchTSD);
+ _glthread_InitTSD(&ContextTSD);
+}
+
+void
+_glapi_destroy_multithread(void)
+{
+#ifdef WIN32_THREADS
+ _glthread_DestroyTSD(&_gl_DispatchTSD);
+ _glthread_DestroyTSD(&ContextTSD);
+#endif
+}
+
/**
* Mutex for multithread check.
*/
@@ -168,9 +175,7 @@ _glapi_check_multithread(void)
CHECK_MULTITHREAD_LOCK();
if (firstCall) {
- /* initialize TSDs */
- (void) _glthread_GetTSD(&ContextTSD);
- (void) _glthread_GetTSD(&_gl_DispatchTSD);
+ _glapi_init_multithread(void)
knownID = _glthread_GetID();
firstCall = GL_FALSE;
@@ -185,6 +190,12 @@ _glapi_check_multithread(void)
#else
+void
+_glapi_init_multithread(void) { }
+
+void
+_glapi_destroy_multithread(void) { }
+
PUBLIC void
_glapi_check_multithread(void) { }
diff --git a/src/mesa/glapi/glapi.h b/src/mesa/glapi/glapi.h
index 0abec5df769..2eae6d5c438 100644
--- a/src/mesa/glapi/glapi.h
+++ b/src/mesa/glapi/glapi.h
@@ -122,6 +122,14 @@ extern void *_glapi_Context;
**/
extern void
+_glapi_init_multithread(void);
+
+
+extern void
+_glapi_destroy_multithread(void);
+
+
+extern void
_glapi_check_multithread(void);
diff --git a/src/mesa/glapi/glthread.c b/src/mesa/glapi/glthread.c
index be4e2f754d7..15401d730e0 100644
--- a/src/mesa/glapi/glthread.c
+++ b/src/mesa/glapi/glthread.c
@@ -190,17 +190,9 @@ _glthread_SetTSD(_glthread_TSD *tsd, void *ptr)
*/
#ifdef WIN32_THREADS
-void FreeTSD(_glthread_TSD *p)
+static void InsteadOf_exit(int nCode)
{
- if (p->initMagic==INIT_MAGIC) {
- TlsFree(p->key);
- p->initMagic=0;
- }
-}
-
-void InsteadOf_exit(int nCode)
-{
- DWORD dwErr=GetLastError();
+ DWORD dwErr = GetLastError();
}
PUBLIC unsigned long
@@ -222,6 +214,17 @@ _glthread_InitTSD(_glthread_TSD *tsd)
}
+void
+_glthread_DestroyTSD(_glthread_TSD *tsd)
+{
+ if (tsd->initMagic != INIT_MAGIC) {
+ return;
+ }
+ TlsFree(tsd->key);
+ tsd->initMagic = 0x0;
+}
+
+
void *
_glthread_GetTSD(_glthread_TSD *tsd)
{
diff --git a/src/mesa/glapi/glthread.h b/src/mesa/glapi/glthread.h
index be395013956..389c24204b5 100644
--- a/src/mesa/glapi/glthread.h
+++ b/src/mesa/glapi/glthread.h
@@ -315,6 +315,10 @@ extern void
_glthread_InitTSD(_glthread_TSD *);
+extern void
+_glthread_DestroyTSD(_glthread_TSD *); /* WIN32 only */
+
+
extern void *
_glthread_GetTSD(_glthread_TSD *);