Memory: Restore unused interfaces, in case other tools called them.
authorJohn Kessenich <cepheus@frii.com>
Tue, 14 Nov 2017 05:19:21 +0000 (22:19 -0700)
committerJohn Kessenich <cepheus@frii.com>
Tue, 14 Nov 2017 05:19:21 +0000 (22:19 -0700)
OGLCompilersDLL/InitializeDll.cpp
OGLCompilersDLL/InitializeDll.h
glslang/OSDependent/Unix/ossource.cpp

index d4e1b9f..abea910 100644 (file)
@@ -115,4 +115,51 @@ bool InitThread()
     return true;
 }
 
+// Not necessary to call this: InitThread() is reentrant, and the need
+// to do per thread tear down has been removed.
+//
+// This is kept, with memory management removed, to satisfy any exiting
+// calls to it that rely on it.
+bool DetachThread()
+{
+    bool success = true;
+
+    if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
+        return true;
+
+    //
+    // Function is re-entrant and this thread may not have been initialized.
+    //
+    if (OS_GetTLSValue(ThreadInitializeIndex) != 0) {
+        if (!OS_SetTLSValue(ThreadInitializeIndex, (void *)0)) {
+            assert(0 && "DetachThread(): Unable to clear init flag.");
+            success = false;
+        }
+    }
+
+    return success;
+}
+
+// Not necessary to call this: InitProcess() is reentrant.
+//
+// This is kept, with memory management removed, to satisfy any exiting
+// calls to it that rely on it.
+//
+// Users of glslang should call shFinalize() or glslang::FinalizeProcess() for
+// process-scoped memory tear down.
+bool DetachProcess()
+{
+    bool success = true;
+
+    if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
+        return true;
+
+    success = DetachThread();
+
+    OS_FreeTLSIndex(ThreadInitializeIndex);
+    ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
+
+    return success;
+}
+
 } // end namespace glslang
index 3f27ce9..661cee4 100644 (file)
@@ -40,6 +40,8 @@ namespace glslang {
 
 bool InitProcess();
 bool InitThread();
+bool DetachThread();  // not called from standalone, perhaps other tools rely on parts of it
+bool DetachProcess(); // not called from standalone, perhaps other tools rely on parts of it
 
 } // end namespace glslang
 
index 9c16dc4..24b77e1 100644 (file)
@@ -56,6 +56,7 @@ namespace glslang {
 //
 static void DetachThreadLinux(void *)
 {
+    DetachThread();
 }
 
 //