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) {