diff options
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/view/HardwareRenderer.java | 11 | ||||
-rw-r--r-- | core/java/android/view/ThreadedRenderer.java | 17 | ||||
-rw-r--r-- | core/java/android/view/ViewRootImpl.java | 16 |
3 files changed, 20 insertions, 24 deletions
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java index c0e42a3..cfb4af2 100644 --- a/core/java/android/view/HardwareRenderer.java +++ b/core/java/android/view/HardwareRenderer.java @@ -387,17 +387,6 @@ public abstract class HardwareRenderer { abstract boolean copyLayerInto(HardwareLayer layer, Bitmap bitmap); /** - * Schedules the functor for execution in either kModeProcess or - * kModeProcessNoContext, depending on whether or not there is an EGLContext. - * - * @param functor The native functor to invoke - * @param waitForCompletion If true, this will not return until the functor - * has invoked. If false, the functor may be invoked - * asynchronously. - */ - abstract void invokeFunctor(long functor, boolean waitForCompletion); - - /** * Initializes the hardware renderer for the specified surface and setup the * renderer for drawing, if needed. This is invoked when the ViewAncestor has * potentially lost the hardware renderer. The hardware renderer should be 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 @@ public class ThreadedRenderer extends HardwareRenderer { 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 @@ public class ThreadedRenderer extends HardwareRenderer { } } - @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 @@ public class ThreadedRenderer extends HardwareRenderer { 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 @@ public class ThreadedRenderer extends HardwareRenderer { 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 @@ public class ThreadedRenderer extends HardwareRenderer { 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 @@ public class ThreadedRenderer extends HardwareRenderer { 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); diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index f574042..329efcc 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -661,11 +661,19 @@ public final class ViewRootImpl implements ViewParent, } } + /** + * Schedules the functor for execution in either kModeProcess or + * kModeProcessNoContext, depending on whether or not there is an EGLContext. + * + * @param functor The native functor to invoke + * @param waitForCompletion If true, this will not return until the functor + * has invoked. If false, the functor may be invoked + * asynchronously. + */ public boolean invokeFunctor(long functor, boolean waitForCompletion) { - if (mAttachInfo.mHardwareRenderer == null) { - return false; - } - mAttachInfo.mHardwareRenderer.invokeFunctor(functor, waitForCompletion); + ThreadedRenderer.invokeFunctor(functor, waitForCompletion); + // TODO: Remove the return value. This is here for compatibility + // with current webview, which expects a boolean return true; } |