summaryrefslogtreecommitdiff
path: root/src/mesa/glapi/glthread.c
diff options
context:
space:
mode:
authorBrian Paul <brian.paul@tungstengraphics.com>2006-06-16 14:50:05 +0000
committerBrian Paul <brian.paul@tungstengraphics.com>2006-06-16 14:50:05 +0000
commit385f23edf91a366b2e81449632ba3862957a2a74 (patch)
tree61378612bdd021ecface03f6cd84ac75be5c32e2 /src/mesa/glapi/glthread.c
parentc0168fabed24e9089b47895475c7030925cbf399 (diff)
Thread safety for Win32. SourceForge bug #1507315.
Diffstat (limited to 'src/mesa/glapi/glthread.c')
-rw-r--r--src/mesa/glapi/glthread.c35
1 files changed, 21 insertions, 14 deletions
diff --git a/src/mesa/glapi/glthread.c b/src/mesa/glapi/glthread.c
index 0683c1ec76..4513853f5a 100644
--- a/src/mesa/glapi/glthread.c
+++ b/src/mesa/glapi/glthread.c
@@ -1,9 +1,8 @@
-
/*
* Mesa 3-D graphics library
- * Version: 4.1
+ * Version: 6.5.1
*
- * Copyright (C) 1999-2002 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
* copy of this software and associated documentation files (the "Software"),
@@ -186,11 +185,23 @@ _glthread_SetTSD(_glthread_TSD *tsd, void *ptr)
*/
#ifdef WIN32_THREADS
+void FreeTSD(_glthread_TSD *p)
+{
+ if (p->initMagic==INIT_MAGIC) {
+ TlsFree(p->key);
+ p->initMagic=0;
+ }
+}
+
+void InsteadOf_exit(int nCode)
+{
+ DWORD dwErr=GetLastError();
+}
+
unsigned long
_glthread_GetID(void)
{
- abort(); /* XXX not implemented yet */
- return (unsigned long) 0;
+ return GetCurrentThreadId();
}
@@ -198,11 +209,9 @@ void
_glthread_InitTSD(_glthread_TSD *tsd)
{
tsd->key = TlsAlloc();
- if (tsd->key == 0xffffffff) {
- /* Can Windows handle stderr messages for non-console
- applications? Does Windows have perror? */
- /* perror(SET_INIT_ERROR);*/
- exit(-1);
+ if (tsd->key == TLS_OUT_OF_INDEXES) {
+ perror("Mesa:_glthread_InitTSD");
+ InsteadOf_exit(-1);
}
tsd->initMagic = INIT_MAGIC;
}
@@ -227,10 +236,8 @@ _glthread_SetTSD(_glthread_TSD *tsd, void *ptr)
_glthread_InitTSD(tsd);
}
if (TlsSetValue(tsd->key, ptr) == 0) {
- /* Can Windows handle stderr messages for non-console
- applications? Does Windows have perror? */
- /* perror(SET_TSD_ERROR);*/
- exit(-1);
+ perror("Mesa:_glthread_SetTSD");
+ InsteadOf_exit(-1);
}
}