No-fail invokeFunctor
Bug: 15513308
Bug: 15449247
Change-Id: I13a29f9c8d4975cdda6dcb33b6332c2555ff0f7c
diff --git a/core/java/android/view/ThreadedRenderer.java b/core/java/android/view/ThreadedRenderer.java
index a2ff0fb..5c67da9 100644
--- a/core/java/android/view/ThreadedRenderer.java
+++ b/core/java/android/view/ThreadedRenderer.java
@@ -80,13 +80,13 @@
private boolean mProfilingEnabled;
ThreadedRenderer(Context context, boolean translucent) {
- AtlasInitializer.sInstance.init(context);
-
long rootNodePtr = nCreateRootRenderNode();
mRootNode = RenderNode.adopt(rootNodePtr);
mRootNode.setClipToBounds(false);
mNativeProxy = nCreateProxy(translucent, rootNodePtr);
+ AtlasInitializer.sInstance.init(context, mNativeProxy);
+
// Setup timing
mChoreographer = Choreographer.getInstance();
nSetFrameInterval(mNativeProxy, mChoreographer.getFrameIntervalNanos());
@@ -259,9 +259,8 @@
}
}
- @Override
- void invokeFunctor(long functor, boolean waitForCompletion) {
- nInvokeFunctor(mNativeProxy, functor, waitForCompletion);
+ static void invokeFunctor(long functor, boolean waitForCompletion) {
+ nInvokeFunctor(functor, waitForCompletion);
}
@Override
@@ -342,7 +341,7 @@
private AtlasInitializer() {}
- synchronized void init(Context context) {
+ synchronized void init(Context context, long renderProxy) {
if (mInitialized) return;
IBinder binder = ServiceManager.getService("assetatlas");
if (binder == null) return;
@@ -356,7 +355,7 @@
if (map != null) {
// TODO Remove after fixing b/15425820
validateMap(context, map);
- nSetAtlas(buffer, map);
+ nSetAtlas(renderProxy, buffer, map);
mInitialized = true;
}
// If IAssetAtlas is not the same class as the IBinder
@@ -399,7 +398,7 @@
static native void setupShadersDiskCache(String cacheFile);
- private static native void nSetAtlas(GraphicBuffer buffer, long[] map);
+ private static native void nSetAtlas(long nativeProxy, GraphicBuffer buffer, long[] map);
private static native long nCreateRootRenderNode();
private static native long nCreateProxy(boolean translucent, long rootRenderNode);
@@ -419,7 +418,7 @@
private static native void nRunWithGlContext(long nativeProxy, Runnable runnable);
private static native void nDestroyCanvasAndSurface(long nativeProxy);
- private static native void nInvokeFunctor(long nativeProxy, long functor, boolean waitForCompletion);
+ private static native void nInvokeFunctor(long functor, boolean waitForCompletion);
private static native long nCreateDisplayListLayer(long nativeProxy, int width, int height);
private static native long nCreateTextureLayer(long nativeProxy);