Thread launch strategies.

Change-Id: I506df786e815205a8e51906c2b517302c1ef2471
diff --git a/rsScriptC.cpp b/rsScriptC.cpp
index 7c7b037..a140e22 100644
--- a/rsScriptC.cpp
+++ b/rsScriptC.cpp
@@ -278,7 +278,7 @@
     }
 
 
-    if ((rsc->getWorkerPoolSize() > 1) &&
+    if ((rsc->getWorkerPoolSize() > 1) && mEnviroment.mIsThreadable &&
         ((mtls.dimY * mtls.dimZ * mtls.dimArray) > 1)) {
 
         //LOGE("launch 1");
@@ -350,10 +350,12 @@
 static BCCvoid* symbolLookup(BCCvoid* pContext, const BCCchar* name)
 {
     const ScriptCState::SymbolTable_t *sym;
+    ScriptC *s = (ScriptC *)pContext;
     sym = ScriptCState::lookupSymbol(name);
     if (sym) {
         return sym->mPtr;
     }
+    s->mEnviroment.mIsThreadable = false;
     sym = ScriptCState::lookupSymbolCL(name);
     if (sym) {
         return sym->mPtr;
@@ -371,8 +373,9 @@
     LOGV("ScriptCState::runCompiler ");
 
     s->mBccScript = bccCreateScript();
+    s->mEnviroment.mIsThreadable = true;
     bccScriptBitcode(s->mBccScript, s->mEnviroment.mScriptText, s->mEnviroment.mScriptTextLength);
-    bccRegisterSymbolCallback(s->mBccScript, symbolLookup, NULL);
+    bccRegisterSymbolCallback(s->mBccScript, symbolLookup, s);
     bccCompileScript(s->mBccScript);
     bccGetScriptLabel(s->mBccScript, "root", (BCCvoid**) &s->mProgram.mRoot);
     bccGetScriptLabel(s->mBccScript, "init", (BCCvoid**) &s->mProgram.mInit);