Framework part of issue #2391576: Add method to start the Jit and call it
diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java
index 094b7dd..07b2d1c 100644
--- a/core/java/android/view/ViewRoot.java
+++ b/core/java/android/view/ViewRoot.java
@@ -98,6 +98,9 @@
 
     static final ThreadLocal<RunQueue> sRunQueues = new ThreadLocal<RunQueue>();
 
+    static final ArrayList<Runnable> sFirstDrawHandlers = new ArrayList<Runnable>();
+    static boolean sFirstDrawComplete = false;
+    
     private static int sDrawTime;
 
     long mLastTrackballTime = 0;
@@ -254,6 +257,14 @@
         return sInstanceCount;
     }
 
+    public static void addFirstDrawHandler(Runnable callback) {
+        synchronized (sFirstDrawHandlers) {
+            if (!sFirstDrawComplete) {
+                sFirstDrawHandlers.add(callback);
+            }
+        }
+    }
+    
     // FIXME for perf testing only
     private boolean mProfile = false;
 
@@ -1189,6 +1200,15 @@
             return;
         }
 
+        if (!sFirstDrawComplete) {
+            synchronized (sFirstDrawHandlers) {
+                sFirstDrawComplete = true;
+                for (int i=0; i<sFirstDrawHandlers.size(); i++) {
+                    post(sFirstDrawHandlers.get(i));
+                }
+            }
+        }
+        
         scrollToRectOrFocus(null, false);
 
         if (mAttachInfo.mViewScrollChanged) {