Interface and naming improvements:
 - the new C++ style interface now stands on its own, with the addition of glslang::InitializeProcess() and glslang::FinalizeProcess()
 - more "global" pool names from a decade ago are fixed to be thread names
 - StandAlone.cpp fully uses one of the old-style interface or new C++ style interface


git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23851 e7fa87d3-cd2b-0410-9028-fcbf551c1848
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index eb0c6f4..b3a37dc 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -591,12 +591,6 @@
     bool compileFailed = false;
     bool linkFailed = false;
     
-    // Init for front-end proper
-    ShInitialize();
-
-    // Init for standalone
-    glslang::InitGlobalLock();
-
     if (! ProcessArguments(argc, argv)) {
         usage();
         return EFailUsage;
@@ -620,9 +614,13 @@
     // 1) linking all arguments together, single-threaded, new C++ interface
     // 2) independent arguments, can be tackled by multiple asynchronous threads, for testing thread safety, using the old handle interface
     //
-    if (Options & EOptionsLinkProgram)
+    if (Options & EOptionsLinkProgram) {
+        glslang::InitializeProcess();
         CompileAndLinkShaders();
-    else {
+        glslang::FinalizeProcess();
+    } else {
+        ShInitialize();
+
         bool printShaderNames = Worklist.size() > 1;
 
         if (Options & EOptionMultiThreaded) {
@@ -650,6 +648,8 @@
                 delete Work[w];
             }
         }
+
+        ShFinalize();
     }
 
     if (Delay)