Loading core/java/android/view/HardwareLayer.java +2 −47 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package android.view; import android.graphics.Bitmap; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.SurfaceTexture; import com.android.internal.util.VirtualRefBasePtr; Loading @@ -34,34 +33,18 @@ import com.android.internal.util.VirtualRefBasePtr; * @hide */ final class HardwareLayer { private static final int LAYER_TYPE_TEXTURE = 1; private static final int LAYER_TYPE_DISPLAY_LIST = 2; private HardwareRenderer mRenderer; private VirtualRefBasePtr mFinalizer; private RenderNode mDisplayList; private final int mLayerType; private HardwareLayer(HardwareRenderer renderer, long deferredUpdater, int type) { private HardwareLayer(HardwareRenderer renderer, long deferredUpdater) { if (renderer == null || deferredUpdater == 0) { throw new IllegalArgumentException("Either hardware renderer: " + renderer + " or deferredUpdater: " + deferredUpdater + " is invalid"); } mRenderer = renderer; mLayerType = type; mFinalizer = new VirtualRefBasePtr(deferredUpdater); } private void assertType(int type) { if (mLayerType != type) { throw new IllegalAccessError("Method not appropriate for this layer type! " + mLayerType); } } boolean hasDisplayList() { return mDisplayList != null; } /** * Update the paint used when drawing this layer. * Loading Loading @@ -90,11 +73,6 @@ final class HardwareLayer { // Already destroyed return; } if (mDisplayList != null) { mDisplayList.destroyDisplayListData(); mDisplayList = null; } mRenderer.onLayerDestroyed(this); mRenderer = null; mFinalizer.release(); Loading @@ -105,21 +83,6 @@ final class HardwareLayer { return mFinalizer.get(); } public RenderNode startRecording() { assertType(LAYER_TYPE_DISPLAY_LIST); if (mDisplayList == null) { mDisplayList = RenderNode.create("HardwareLayer"); } return mDisplayList; } public void endRecording(Rect dirtyRect) { nUpdateRenderLayer(mFinalizer.get(), mDisplayList.getNativeDisplayList(), dirtyRect.left, dirtyRect.top, dirtyRect.right, dirtyRect.bottom); mRenderer.pushLayerUpdate(this); } /** * Copies this layer into the specified bitmap. * Loading Loading @@ -160,7 +123,6 @@ final class HardwareLayer { * Indicates that this layer has lost its texture. */ public void detachSurfaceTexture(final SurfaceTexture surface) { assertType(LAYER_TYPE_TEXTURE); mRenderer.safelyRun(new Runnable() { @Override public void run() { Loading @@ -177,13 +139,11 @@ final class HardwareLayer { } public void setSurfaceTexture(SurfaceTexture surface) { assertType(LAYER_TYPE_TEXTURE); nSetSurfaceTexture(mFinalizer.get(), surface, false); mRenderer.pushLayerUpdate(this); } public void updateSurfaceTexture() { assertType(LAYER_TYPE_TEXTURE); nUpdateSurfaceTexture(mFinalizer.get()); mRenderer.pushLayerUpdate(this); } Loading @@ -192,18 +152,13 @@ final class HardwareLayer { * This should only be used by HardwareRenderer! Do not call directly */ SurfaceTexture createSurfaceTexture() { assertType(LAYER_TYPE_TEXTURE); SurfaceTexture st = new SurfaceTexture(nGetTexName(mFinalizer.get())); nSetSurfaceTexture(mFinalizer.get(), st, true); return st; } static HardwareLayer adoptTextureLayer(HardwareRenderer renderer, long layer) { return new HardwareLayer(renderer, layer, LAYER_TYPE_TEXTURE); } static HardwareLayer adoptDisplayListLayer(HardwareRenderer renderer, long layer) { return new HardwareLayer(renderer, layer, LAYER_TYPE_DISPLAY_LIST); return new HardwareLayer(renderer, layer); } private static native void nOnTextureDestroyed(long layerUpdater); Loading core/java/android/view/HardwareRenderer.java +0 −10 Original line number Diff line number Diff line Loading @@ -373,16 +373,6 @@ public abstract class HardwareRenderer { */ abstract HardwareLayer createTextureLayer(); /** * Creates a new hardware layer. * * @param width The minimum width of the layer * @param height The minimum height of the layer * * @return A hardware layer */ abstract HardwareLayer createDisplayListLayer(int width, int height); /** * Creates a new {@link SurfaceTexture} that can be used to render into the * specified hardware layer. Loading core/java/android/view/RenderNode.java +9 −5 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.view; import android.annotation.NonNull; import android.graphics.Matrix; import android.graphics.Outline; import android.graphics.Paint; import java.util.ArrayList; import java.util.List; Loading Loading @@ -322,11 +323,13 @@ public class RenderNode { * handled in the drawLayer operation directly (and more efficiently). * * @param caching true if the display list represents a hardware layer, false otherwise. * * @hide */ public boolean setCaching(boolean caching) { return nSetCaching(mNativeRenderNode, caching); public boolean setLayerType(int layerType) { return nSetLayerType(mNativeRenderNode, layerType); } public boolean setLayerPaint(Paint paint) { return nSetLayerPaint(mNativeRenderNode, paint != null ? paint.mNativePaint : 0); } /** Loading Loading @@ -902,7 +905,8 @@ public class RenderNode { private static native boolean nSetCameraDistance(long renderNode, float distance); private static native boolean nSetPivotY(long renderNode, float pivotY); private static native boolean nSetPivotX(long renderNode, float pivotX); private static native boolean nSetCaching(long renderNode, boolean caching); private static native boolean nSetLayerType(long renderNode, int layerType); private static native boolean nSetLayerPaint(long renderNode, long paint); private static native boolean nSetClipToBounds(long renderNode, boolean clipToBounds); private static native boolean nSetProjectBackwards(long renderNode, boolean shouldProject); private static native boolean nSetProjectionReceiver(long renderNode, boolean shouldRecieve); Loading core/java/android/view/TextureView.java +5 −5 Original line number Diff line number Diff line Loading @@ -275,6 +275,11 @@ public class TextureView extends View { } } @Override public void setLayerPaint(Paint paint) { setLayerType(/* ignored */ 0, paint); } /** * Always returns {@link #LAYER_TYPE_HARDWARE}. */ Loading Loading @@ -332,11 +337,6 @@ public class TextureView extends View { } } @Override boolean destroyLayer(boolean valid) { return false; } /** * @hide */ Loading core/java/android/view/ThreadedRenderer.java +0 −6 Original line number Diff line number Diff line Loading @@ -256,12 +256,6 @@ public class ThreadedRenderer extends HardwareRenderer { nInvokeFunctor(mNativeProxy, functor, waitForCompletion); } @Override HardwareLayer createDisplayListLayer(int width, int height) { long layer = nCreateDisplayListLayer(mNativeProxy, width, height); return HardwareLayer.adoptDisplayListLayer(this, layer); } @Override HardwareLayer createTextureLayer() { long layer = nCreateTextureLayer(mNativeProxy); Loading Loading
core/java/android/view/HardwareLayer.java +2 −47 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package android.view; import android.graphics.Bitmap; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.SurfaceTexture; import com.android.internal.util.VirtualRefBasePtr; Loading @@ -34,34 +33,18 @@ import com.android.internal.util.VirtualRefBasePtr; * @hide */ final class HardwareLayer { private static final int LAYER_TYPE_TEXTURE = 1; private static final int LAYER_TYPE_DISPLAY_LIST = 2; private HardwareRenderer mRenderer; private VirtualRefBasePtr mFinalizer; private RenderNode mDisplayList; private final int mLayerType; private HardwareLayer(HardwareRenderer renderer, long deferredUpdater, int type) { private HardwareLayer(HardwareRenderer renderer, long deferredUpdater) { if (renderer == null || deferredUpdater == 0) { throw new IllegalArgumentException("Either hardware renderer: " + renderer + " or deferredUpdater: " + deferredUpdater + " is invalid"); } mRenderer = renderer; mLayerType = type; mFinalizer = new VirtualRefBasePtr(deferredUpdater); } private void assertType(int type) { if (mLayerType != type) { throw new IllegalAccessError("Method not appropriate for this layer type! " + mLayerType); } } boolean hasDisplayList() { return mDisplayList != null; } /** * Update the paint used when drawing this layer. * Loading Loading @@ -90,11 +73,6 @@ final class HardwareLayer { // Already destroyed return; } if (mDisplayList != null) { mDisplayList.destroyDisplayListData(); mDisplayList = null; } mRenderer.onLayerDestroyed(this); mRenderer = null; mFinalizer.release(); Loading @@ -105,21 +83,6 @@ final class HardwareLayer { return mFinalizer.get(); } public RenderNode startRecording() { assertType(LAYER_TYPE_DISPLAY_LIST); if (mDisplayList == null) { mDisplayList = RenderNode.create("HardwareLayer"); } return mDisplayList; } public void endRecording(Rect dirtyRect) { nUpdateRenderLayer(mFinalizer.get(), mDisplayList.getNativeDisplayList(), dirtyRect.left, dirtyRect.top, dirtyRect.right, dirtyRect.bottom); mRenderer.pushLayerUpdate(this); } /** * Copies this layer into the specified bitmap. * Loading Loading @@ -160,7 +123,6 @@ final class HardwareLayer { * Indicates that this layer has lost its texture. */ public void detachSurfaceTexture(final SurfaceTexture surface) { assertType(LAYER_TYPE_TEXTURE); mRenderer.safelyRun(new Runnable() { @Override public void run() { Loading @@ -177,13 +139,11 @@ final class HardwareLayer { } public void setSurfaceTexture(SurfaceTexture surface) { assertType(LAYER_TYPE_TEXTURE); nSetSurfaceTexture(mFinalizer.get(), surface, false); mRenderer.pushLayerUpdate(this); } public void updateSurfaceTexture() { assertType(LAYER_TYPE_TEXTURE); nUpdateSurfaceTexture(mFinalizer.get()); mRenderer.pushLayerUpdate(this); } Loading @@ -192,18 +152,13 @@ final class HardwareLayer { * This should only be used by HardwareRenderer! Do not call directly */ SurfaceTexture createSurfaceTexture() { assertType(LAYER_TYPE_TEXTURE); SurfaceTexture st = new SurfaceTexture(nGetTexName(mFinalizer.get())); nSetSurfaceTexture(mFinalizer.get(), st, true); return st; } static HardwareLayer adoptTextureLayer(HardwareRenderer renderer, long layer) { return new HardwareLayer(renderer, layer, LAYER_TYPE_TEXTURE); } static HardwareLayer adoptDisplayListLayer(HardwareRenderer renderer, long layer) { return new HardwareLayer(renderer, layer, LAYER_TYPE_DISPLAY_LIST); return new HardwareLayer(renderer, layer); } private static native void nOnTextureDestroyed(long layerUpdater); Loading
core/java/android/view/HardwareRenderer.java +0 −10 Original line number Diff line number Diff line Loading @@ -373,16 +373,6 @@ public abstract class HardwareRenderer { */ abstract HardwareLayer createTextureLayer(); /** * Creates a new hardware layer. * * @param width The minimum width of the layer * @param height The minimum height of the layer * * @return A hardware layer */ abstract HardwareLayer createDisplayListLayer(int width, int height); /** * Creates a new {@link SurfaceTexture} that can be used to render into the * specified hardware layer. Loading
core/java/android/view/RenderNode.java +9 −5 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.view; import android.annotation.NonNull; import android.graphics.Matrix; import android.graphics.Outline; import android.graphics.Paint; import java.util.ArrayList; import java.util.List; Loading Loading @@ -322,11 +323,13 @@ public class RenderNode { * handled in the drawLayer operation directly (and more efficiently). * * @param caching true if the display list represents a hardware layer, false otherwise. * * @hide */ public boolean setCaching(boolean caching) { return nSetCaching(mNativeRenderNode, caching); public boolean setLayerType(int layerType) { return nSetLayerType(mNativeRenderNode, layerType); } public boolean setLayerPaint(Paint paint) { return nSetLayerPaint(mNativeRenderNode, paint != null ? paint.mNativePaint : 0); } /** Loading Loading @@ -902,7 +905,8 @@ public class RenderNode { private static native boolean nSetCameraDistance(long renderNode, float distance); private static native boolean nSetPivotY(long renderNode, float pivotY); private static native boolean nSetPivotX(long renderNode, float pivotX); private static native boolean nSetCaching(long renderNode, boolean caching); private static native boolean nSetLayerType(long renderNode, int layerType); private static native boolean nSetLayerPaint(long renderNode, long paint); private static native boolean nSetClipToBounds(long renderNode, boolean clipToBounds); private static native boolean nSetProjectBackwards(long renderNode, boolean shouldProject); private static native boolean nSetProjectionReceiver(long renderNode, boolean shouldRecieve); Loading
core/java/android/view/TextureView.java +5 −5 Original line number Diff line number Diff line Loading @@ -275,6 +275,11 @@ public class TextureView extends View { } } @Override public void setLayerPaint(Paint paint) { setLayerType(/* ignored */ 0, paint); } /** * Always returns {@link #LAYER_TYPE_HARDWARE}. */ Loading Loading @@ -332,11 +337,6 @@ public class TextureView extends View { } } @Override boolean destroyLayer(boolean valid) { return false; } /** * @hide */ Loading
core/java/android/view/ThreadedRenderer.java +0 −6 Original line number Diff line number Diff line Loading @@ -256,12 +256,6 @@ public class ThreadedRenderer extends HardwareRenderer { nInvokeFunctor(mNativeProxy, functor, waitForCompletion); } @Override HardwareLayer createDisplayListLayer(int width, int height) { long layer = nCreateDisplayListLayer(mNativeProxy, width, height); return HardwareLayer.adoptDisplayListLayer(this, layer); } @Override HardwareLayer createTextureLayer() { long layer = nCreateTextureLayer(mNativeProxy); Loading