Loading core/java/android/view/GLES20Canvas.java +1 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,7 @@ class GLES20Canvas extends HardwareCanvas { static native void nSetLayerColorFilter(int layerId, int nativeColorFilter); static native void nUpdateTextureLayer(int layerId, int width, int height, boolean opaque, SurfaceTexture surface); static native void nClearLayerTexture(int layerId); static native void nSetTextureLayerTransform(int layerId, int matrix); static native void nDestroyLayer(int layerId); static native void nDestroyLayerDeferred(int layerId); Loading core/java/android/view/GLES20Layer.java +5 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,11 @@ abstract class GLES20Layer extends HardwareLayer { mLayer = 0; } @Override void clearStorage() { if (mLayer != 0) GLES20Canvas.nClearLayerTexture(mLayer); } static class Finalizer { private int mLayerId; Loading core/java/android/view/HardwareLayer.java +5 −0 Original line number Diff line number Diff line Loading @@ -204,4 +204,9 @@ abstract class HardwareLayer { * @param dirtyRect The dirty region of the layer that needs to be redrawn */ abstract void redrawLater(DisplayList displayList, Rect dirtyRect); /** * Indicates that this layer has lost its underlying storage. */ abstract void clearStorage(); } core/java/android/view/TextureView.java +1 −0 Original line number Diff line number Diff line Loading @@ -224,6 +224,7 @@ public class TextureView extends View { private void destroySurface() { if (mLayer != null) { mSurface.detachFromGLContext(); mLayer.clearStorage(); boolean shouldRelease = true; if (mListener != null) { Loading core/jni/android_view_GLES20Canvas.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -822,6 +822,11 @@ static void android_view_GLES20Canvas_updateRenderLayer(JNIEnv* env, jobject cla layer->updateDeferred(renderer, displayList, left, top, right, bottom); } static void android_view_GLES20Canvas_clearLayerTexture(JNIEnv* env, jobject clazz, Layer* layer) { layer->clearTexture(); } static void android_view_GLES20Canvas_setTextureLayerTransform(JNIEnv* env, jobject clazz, Layer* layer, SkMatrix* matrix) { Loading Loading @@ -1016,6 +1021,7 @@ static JNINativeMethod gMethods[] = { { "nUpdateTextureLayer", "(IIIZLandroid/graphics/SurfaceTexture;)V", (void*) android_view_GLES20Canvas_updateTextureLayer }, { "nUpdateRenderLayer", "(IIIIIII)V", (void*) android_view_GLES20Canvas_updateRenderLayer }, { "nClearLayerTexture", "(I)V", (void*) android_view_GLES20Canvas_clearLayerTexture }, { "nDestroyLayer", "(I)V", (void*) android_view_GLES20Canvas_destroyLayer }, { "nDestroyLayerDeferred", "(I)V", (void*) android_view_GLES20Canvas_destroyLayerDeferred }, { "nDrawLayer", "(IIFFI)V", (void*) android_view_GLES20Canvas_drawLayer }, Loading Loading
core/java/android/view/GLES20Canvas.java +1 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,7 @@ class GLES20Canvas extends HardwareCanvas { static native void nSetLayerColorFilter(int layerId, int nativeColorFilter); static native void nUpdateTextureLayer(int layerId, int width, int height, boolean opaque, SurfaceTexture surface); static native void nClearLayerTexture(int layerId); static native void nSetTextureLayerTransform(int layerId, int matrix); static native void nDestroyLayer(int layerId); static native void nDestroyLayerDeferred(int layerId); Loading
core/java/android/view/GLES20Layer.java +5 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,11 @@ abstract class GLES20Layer extends HardwareLayer { mLayer = 0; } @Override void clearStorage() { if (mLayer != 0) GLES20Canvas.nClearLayerTexture(mLayer); } static class Finalizer { private int mLayerId; Loading
core/java/android/view/HardwareLayer.java +5 −0 Original line number Diff line number Diff line Loading @@ -204,4 +204,9 @@ abstract class HardwareLayer { * @param dirtyRect The dirty region of the layer that needs to be redrawn */ abstract void redrawLater(DisplayList displayList, Rect dirtyRect); /** * Indicates that this layer has lost its underlying storage. */ abstract void clearStorage(); }
core/java/android/view/TextureView.java +1 −0 Original line number Diff line number Diff line Loading @@ -224,6 +224,7 @@ public class TextureView extends View { private void destroySurface() { if (mLayer != null) { mSurface.detachFromGLContext(); mLayer.clearStorage(); boolean shouldRelease = true; if (mListener != null) { Loading
core/jni/android_view_GLES20Canvas.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -822,6 +822,11 @@ static void android_view_GLES20Canvas_updateRenderLayer(JNIEnv* env, jobject cla layer->updateDeferred(renderer, displayList, left, top, right, bottom); } static void android_view_GLES20Canvas_clearLayerTexture(JNIEnv* env, jobject clazz, Layer* layer) { layer->clearTexture(); } static void android_view_GLES20Canvas_setTextureLayerTransform(JNIEnv* env, jobject clazz, Layer* layer, SkMatrix* matrix) { Loading Loading @@ -1016,6 +1021,7 @@ static JNINativeMethod gMethods[] = { { "nUpdateTextureLayer", "(IIIZLandroid/graphics/SurfaceTexture;)V", (void*) android_view_GLES20Canvas_updateTextureLayer }, { "nUpdateRenderLayer", "(IIIIIII)V", (void*) android_view_GLES20Canvas_updateRenderLayer }, { "nClearLayerTexture", "(I)V", (void*) android_view_GLES20Canvas_clearLayerTexture }, { "nDestroyLayer", "(I)V", (void*) android_view_GLES20Canvas_destroyLayer }, { "nDestroyLayerDeferred", "(I)V", (void*) android_view_GLES20Canvas_destroyLayerDeferred }, { "nDrawLayer", "(IIFFI)V", (void*) android_view_GLES20Canvas_drawLayer }, Loading