Added few more stubs so that control reaches to DestroyDevice().
[mesa.git] / src / mapi / u_current.c
index 036572483c2c542937a6bdd1d97c5b0b53508b80..554c974047745b80a63adaa54809cde149d9d8f3 100644 (file)
@@ -48,8 +48,8 @@
  *                 drivers!  No changes to the public glapi interface.
  */
 
+#include "c11/threads.h"
 #include "u_current.h"
-#include "u_thread.h"
 
 #ifndef MAPI_MODE_UTIL
 
@@ -97,46 +97,46 @@ extern void (*__glapi_noop_table[])(void);
  * between TLS enabled loaders and non-TLS DRI drivers.
  */
 /*@{*/
-#if defined(GLX_USE_TLS)
+#if defined(USE_ELF_TLS)
 
-__thread struct mapi_table *u_current_table
+__thread struct _glapi_table *u_current_table
     __attribute__((tls_model("initial-exec")))
-    = (struct mapi_table *) table_noop_array;
+    = (struct _glapi_table *) table_noop_array;
 
 __thread void *u_current_context
     __attribute__((tls_model("initial-exec")));
 
 #else
 
-struct mapi_table *u_current_table =
-   (struct mapi_table *) table_noop_array;
+struct _glapi_table *u_current_table =
+   (struct _glapi_table *) table_noop_array;
 void *u_current_context;
 
-struct u_tsd u_current_table_tsd;
-static struct u_tsd u_current_context_tsd;
+tss_t u_current_table_tsd;
+static tss_t u_current_context_tsd;
 static int ThreadSafe;
 
-#endif /* defined(GLX_USE_TLS) */
+#endif /* defined(USE_ELF_TLS) */
 /*@}*/
 
 
 void
 u_current_destroy(void)
 {
-#if !defined(GLX_USE_TLS)
-   u_tsd_destroy(&u_current_table_tsd);
-   u_tsd_destroy(&u_current_context_tsd);
+#if !defined(USE_ELF_TLS)
+   tss_delete(u_current_table_tsd);
+   tss_delete(u_current_context_tsd);
 #endif
 }
 
 
-#if !defined(GLX_USE_TLS)
+#if !defined(USE_ELF_TLS)
 
 static void
 u_current_init_tsd(void)
 {
-   u_tsd_init(&u_current_table_tsd);
-   u_tsd_init(&u_current_context_tsd);
+   tss_create(&u_current_table_tsd, NULL);
+   tss_create(&u_current_context_tsd, NULL);
 }
 
 /**
@@ -230,10 +230,10 @@ u_current_set_context(const void *ptr)
 {
    u_current_init();
 
-#if defined(GLX_USE_TLS)
+#if defined(USE_ELF_TLS)
    u_current_context = (void *) ptr;
 #else
-   u_tsd_set(&u_current_context_tsd, (void *) ptr);
+   tss_set(u_current_context_tsd, (void *) ptr);
    u_current_context = (ThreadSafe) ? NULL : (void *) ptr;
 #endif
 }
@@ -246,12 +246,10 @@ u_current_set_context(const void *ptr)
 void *
 u_current_get_context_internal(void)
 {
-#if defined(GLX_USE_TLS)
+#if defined(USE_ELF_TLS)
    return u_current_context;
 #else
-   return (ThreadSafe)
-      ? u_tsd_get(&u_current_context_tsd)
-      : u_current_context;
+   return ThreadSafe ? tss_get(u_current_context_tsd) : u_current_context;
 #endif
 }
 
@@ -261,19 +259,19 @@ u_current_get_context_internal(void)
  * table (__glapi_noop_table).
  */
 void
-u_current_set_table(const struct mapi_table *tbl)
+u_current_set_table(const struct _glapi_table *tbl)
 {
    u_current_init();
 
    stub_init_once();
 
    if (!tbl)
-      tbl = (const struct mapi_table *) table_noop_array;
+      tbl = (const struct _glapi_table *) table_noop_array;
 
-#if defined(GLX_USE_TLS)
-   u_current_table = (struct mapi_table *) tbl;
+#if defined(USE_ELF_TLS)
+   u_current_table = (struct _glapi_table *) tbl;
 #else
-   u_tsd_set(&u_current_table_tsd, (void *) tbl);
+   tss_set(u_current_table_tsd, (void *) tbl);
    u_current_table = (ThreadSafe) ? NULL : (void *) tbl;
 #endif
 }
@@ -281,13 +279,15 @@ u_current_set_table(const struct mapi_table *tbl)
 /**
  * Return pointer to current dispatch table for calling thread.
  */
-struct mapi_table *
+struct _glapi_table *
 u_current_get_table_internal(void)
 {
-#if defined(GLX_USE_TLS)
+#if defined(USE_ELF_TLS)
    return u_current_table;
 #else
-   return (struct mapi_table *) ((ThreadSafe) ?
-         u_tsd_get(&u_current_table_tsd) : (void *) u_current_table);
+   if (ThreadSafe)
+      return (struct _glapi_table *) tss_get(u_current_table_tsd);
+   else
+      return (struct _glapi_table *) u_current_table;
 #endif
 }