summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/glrenderer
diff options
context:
space:
mode:
authorGeorge Mount <mount@google.com>2013-01-13 11:05:05 -0800
committerGeorge Mount <mount@google.com>2013-01-13 11:05:05 -0800
commit44a1b22eb7098819ac0251764b9fa686d8339d66 (patch)
tree97b176db868707e75bc6a8a46ffb28e9ab02cb33 /src/com/android/gallery3d/glrenderer
parent91a2d2ff465a7a2347e5b72320216ea04aec2607 (diff)
downloadandroid_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/glrenderer')
-rw-r--r--src/com/android/gallery3d/glrenderer/BasicTexture.java4
-rw-r--r--src/com/android/gallery3d/glrenderer/GLES20Canvas.java9
-rw-r--r--src/com/android/gallery3d/glrenderer/RawTexture.java10
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();