Fix potential bug

pull/537/head
Mattia Iavarone 6 years ago
parent 8da9ece4da
commit 7fee9cf619
  1. 13
      cameraview/src/main/java/com/otaliastudios/cameraview/filter/BaseFilter.java

@ -96,6 +96,7 @@ public abstract class BaseFilter implements Filter {
private int vertexTranformMatrixLocation = -1; private int vertexTranformMatrixLocation = -1;
private int vertexPositionLocation = -1; private int vertexPositionLocation = -1;
private int vertexTextureCoordinateLocation = -1; private int vertexTextureCoordinateLocation = -1;
private int programHandle = -1;
private Size outputSize; private Size outputSize;
@SuppressWarnings("WeakerAccess") @SuppressWarnings("WeakerAccess")
@ -127,6 +128,7 @@ public abstract class BaseFilter implements Filter {
@Override @Override
public void onCreate(int programHandle) { public void onCreate(int programHandle) {
this.programHandle = programHandle;
vertexPositionLocation = GLES20.glGetAttribLocation(programHandle, vertexPositionName); vertexPositionLocation = GLES20.glGetAttribLocation(programHandle, vertexPositionName);
GlUtils.checkLocation(vertexPositionLocation, vertexPositionName); GlUtils.checkLocation(vertexPositionLocation, vertexPositionName);
vertexTextureCoordinateLocation = GLES20.glGetAttribLocation(programHandle, vertexTextureCoordinateName); vertexTextureCoordinateLocation = GLES20.glGetAttribLocation(programHandle, vertexTextureCoordinateName);
@ -139,6 +141,7 @@ public abstract class BaseFilter implements Filter {
@Override @Override
public void onDestroy() { public void onDestroy() {
programHandle = -1;
vertexPositionLocation = -1; vertexPositionLocation = -1;
vertexTextureCoordinateLocation = -1; vertexTextureCoordinateLocation = -1;
vertexModelViewProjectionMatrixLocation = -1; vertexModelViewProjectionMatrixLocation = -1;
@ -158,9 +161,13 @@ public abstract class BaseFilter implements Filter {
@Override @Override
public void draw(float[] transformMatrix) { public void draw(float[] transformMatrix) {
onPreDraw(transformMatrix); if (programHandle == -1) {
onDraw(); LOG.w("Filter.draw() called after destroying the filter. This can happen rarely because of threading.");
onPostDraw(); } else {
onPreDraw(transformMatrix);
onDraw();
onPostDraw();
}
} }
protected void onPreDraw(float[] transformMatrix) { protected void onPreDraw(float[] transformMatrix) {

Loading…
Cancel
Save