Fix invokables to make sure script pointers are setup before invoking function calls.  Reduce app startup time up to 1s.
diff --git a/java/Fountain/AndroidManifest.xml b/java/Fountain/AndroidManifest.xml
index dd0e428..1185930 100644
--- a/java/Fountain/AndroidManifest.xml
+++ b/java/Fountain/AndroidManifest.xml
@@ -2,8 +2,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.android.fountain">
     <application android:label="Fountain">
-        <activity android:name="Fountain"
-                  android:theme="@android:style/Theme.Translucent">
+        <activity android:name="Fountain">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
diff --git a/rsContext.cpp b/rsContext.cpp
index cc11ab2..0ac8320 100644
--- a/rsContext.cpp
+++ b/rsContext.cpp
@@ -317,7 +317,7 @@
     }
 
     while(!mRunning) {
-        sleep(1);
+        usleep(100);
     }
 
     pthread_attr_destroy(&threadAttr);
diff --git a/rsLocklessFifo.cpp b/rsLocklessFifo.cpp
index 0c40389..f4f5d40 100644
--- a/rsLocklessFifo.cpp
+++ b/rsLocklessFifo.cpp
@@ -159,7 +159,7 @@
     if ((mPut+bytes) > mEnd) {
         // Need to loop regardless of where get is.
         while((mGet > mPut) && (mBuffer+4 >= mGet)) {
-            sleep(1);
+            usleep(100);
         }
 
         // Toss in a reset then the normal wait for space will do the rest.
@@ -170,7 +170,7 @@
 
     // it will fit here so we just need to wait for space.
     while(getFreeSpace() < bytes) {
-        sleep(1);
+        usleep(100);
     }
 
 }
diff --git a/rsScript.cpp b/rsScript.cpp
index 99a085d..76fed3b 100644
--- a/rsScript.cpp
+++ b/rsScript.cpp
@@ -94,6 +94,7 @@
 void rsi_ScriptInvoke(Context *rsc, RsScript vs, uint32_t slot)
 {
     Script *s = static_cast<Script *>(vs);
+    s->setupScript();
     s->mEnviroment.mInvokables[slot]();
 }
 
diff --git a/rsScript.h b/rsScript.h
index e40531e..97cb67a 100644
--- a/rsScript.h
+++ b/rsScript.h
@@ -69,6 +69,7 @@
 
 
 
+    virtual void setupScript() = 0;
     virtual bool run(Context *, uint32_t launchID) = 0;
 };
 
diff --git a/rsScriptC.cpp b/rsScriptC.cpp
index 108ae5a..bff337c 100644
--- a/rsScriptC.cpp
+++ b/rsScriptC.cpp
@@ -46,6 +46,15 @@
     }
 }
 
+void ScriptC::setupScript()
+{
+    for (int ct=0; ct < MAX_SCRIPT_BANKS; ct++) {
+        if (mProgram.mSlotPointers[ct]) {
+            *mProgram.mSlotPointers[ct] = mSlots[ct]->getPtr();
+        }
+    }
+}
+
 
 bool ScriptC::run(Context *rsc, uint32_t launchIndex)
 {
@@ -66,12 +75,7 @@
         mEnviroment.mStartTimeMillis
                 = nanoseconds_to_milliseconds(systemTime(SYSTEM_TIME_MONOTONIC));
     }
-
-    for (int ct=0; ct < MAX_SCRIPT_BANKS; ct++) {
-        if (mProgram.mSlotPointers[ct]) {
-            *mProgram.mSlotPointers[ct] = mSlots[ct]->getPtr();
-        }
-    }
+    setupScript();
 
     bool ret = false;
     tls->mScript = this;
diff --git a/rsScriptC.h b/rsScriptC.h
index 355f0c3..16eb8de 100644
--- a/rsScriptC.h
+++ b/rsScriptC.h
@@ -58,6 +58,7 @@
 
     ACCscript*    mAccScript;
 
+    virtual void setupScript();
     virtual bool run(Context *, uint32_t launchID);
 };