diff options
author | George Mount <mount@google.com> | 2013-01-13 11:05:05 -0800 |
---|---|---|
committer | George Mount <mount@google.com> | 2013-01-13 11:05:05 -0800 |
commit | 44a1b22eb7098819ac0251764b9fa686d8339d66 (patch) | |
tree | 97b176db868707e75bc6a8a46ffb28e9ab02cb33 /src/com/android/gallery3d | |
parent | 91a2d2ff465a7a2347e5b72320216ea04aec2607 (diff) | |
download | android_packages_apps_Gallery2-44a1b22eb7098819ac0251764b9fa686d8339d66.tar.gz android_packages_apps_Gallery2-44a1b22eb7098819ac0251764b9fa686d8339d66.tar.bz2 android_packages_apps_Gallery2-44a1b22eb7098819ac0251764b9fa686d8339d66.zip |
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
Diffstat (limited to 'src/com/android/gallery3d')
-rw-r--r-- | src/com/android/gallery3d/glrenderer/BasicTexture.java | 4 | ||||
-rw-r--r-- | src/com/android/gallery3d/glrenderer/GLES20Canvas.java | 9 | ||||
-rw-r--r-- | src/com/android/gallery3d/glrenderer/RawTexture.java | 10 |
3 files changed, 23 insertions, 0 deletions
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(); |