From 44a1b22eb7098819ac0251764b9fa686d8339d66 Mon Sep 17 00:00:00 2001 From: George Mount Date: Sun, 13 Jan 2013 11:05:05 -0800 Subject: Fix LightCycle capture NullPointerException. Bug 7987002 During capture animation, allow LightCycle to write the current frame to a texture, then use that texture for drawing the background image. Change-Id: I7891e5cac18ee21ff17910790397459f9d57e408 --- src/com/android/gallery3d/glrenderer/BasicTexture.java | 4 ++++ src/com/android/gallery3d/glrenderer/GLES20Canvas.java | 9 +++++++++ src/com/android/gallery3d/glrenderer/RawTexture.java | 10 ++++++++++ 3 files changed, 23 insertions(+) (limited to 'src') diff --git a/src/com/android/gallery3d/glrenderer/BasicTexture.java b/src/com/android/gallery3d/glrenderer/BasicTexture.java index 48227f6ef..82eb5a7ee 100644 --- a/src/com/android/gallery3d/glrenderer/BasicTexture.java +++ b/src/com/android/gallery3d/glrenderer/BasicTexture.java @@ -86,6 +86,10 @@ public abstract class BasicTexture implements Texture { } } + public boolean isFlippedVertically() { + return false; + } + public int getId() { return mId; } diff --git a/src/com/android/gallery3d/glrenderer/GLES20Canvas.java b/src/com/android/gallery3d/glrenderer/GLES20Canvas.java index 149b21efd..28b72ec3b 100644 --- a/src/com/android/gallery3d/glrenderer/GLES20Canvas.java +++ b/src/com/android/gallery3d/glrenderer/GLES20Canvas.java @@ -669,8 +669,17 @@ public class GLES20Canvas implements GLCanvas { setPosition(params, OFFSET_FILL_RECT); GLES20.glUniformMatrix4fv(params[INDEX_TEXTURE_MATRIX].handle, 1, false, textureMatrix, 0); checkError(); + if (texture.isFlippedVertically()) { + save(SAVE_FLAG_MATRIX); + translate(0, target.centerY()); + scale(1, -1, 1); + translate(0, -target.centerY()); + } draw(params, GLES20.GL_TRIANGLE_STRIP, COUNT_FILL_VERTEX, target.left, target.top, target.width(), target.height()); + if (texture.isFlippedVertically()) { + restore(); + } mCountTextureRect++; } diff --git a/src/com/android/gallery3d/glrenderer/RawTexture.java b/src/com/android/gallery3d/glrenderer/RawTexture.java index 74538995b..93f0fdff9 100644 --- a/src/com/android/gallery3d/glrenderer/RawTexture.java +++ b/src/com/android/gallery3d/glrenderer/RawTexture.java @@ -24,6 +24,7 @@ public class RawTexture extends BasicTexture { private static final String TAG = "RawTexture"; private final boolean mOpaque; + private boolean mIsFlipped; public RawTexture(int width, int height, boolean opaque) { mOpaque = opaque; @@ -35,6 +36,15 @@ public class RawTexture extends BasicTexture { return mOpaque; } + @Override + public boolean isFlippedVertically() { + return mIsFlipped; + } + + public void setIsFlippedVertically(boolean isFlipped) { + mIsFlipped = isFlipped; + } + protected void prepare(GLCanvas canvas) { GLId glId = canvas.getGLId(); mId = glId.generateTexture(); -- cgit v1.2.3