* commit '64339168c4ff0b3ac249398811db7c88eca8f95c': Don't destroy the same texture twice Bug #7221449
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ class GLES20TextureLayer extends GLES20Layer {
|
||||
mFinalizer = new Finalizer(mLayer);
|
||||
} else {
|
||||
mFinalizer = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user