summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/CameraScreenNail.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/CameraScreenNail.java')
-rw-r--r--src/com/android/camera/CameraScreenNail.java28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/com/android/camera/CameraScreenNail.java b/src/com/android/camera/CameraScreenNail.java
index 5d3c5c092..d531f4adf 100644
--- a/src/com/android/camera/CameraScreenNail.java
+++ b/src/com/android/camera/CameraScreenNail.java
@@ -90,6 +90,8 @@ public class CameraScreenNail extends SurfaceTextureScreenNail {
}
};
private DrawClient mDraw = mDefaultDraw;
+ private float mAlpha = 1f;
+ private Runnable mOnFrameDrawnListener;
public interface Listener {
void requestRender();
@@ -338,6 +340,12 @@ public class CameraScreenNail extends SurfaceTextureScreenNail {
if (mDraw.requiresSurfaceTexture() && (surfaceTexture == null || !mFirstFrameArrived)) {
return;
}
+ if (mOnFrameDrawnListener != null) {
+ mOnFrameDrawnListener.run();
+ mOnFrameDrawnListener = null;
+ }
+ float oldAlpha = canvas.getAlpha();
+ canvas.setAlpha(mAlpha);
switch (mAnimState) {
case ANIM_NONE:
@@ -393,6 +401,7 @@ public class CameraScreenNail extends SurfaceTextureScreenNail {
directDraw(canvas, x, y, width, height);
}
}
+ canvas.setAlpha(oldAlpha);
callbackIfNeeded();
} // mLock
}
@@ -494,4 +503,23 @@ public class CameraScreenNail extends SurfaceTextureScreenNail {
}
}
}
+
+ public void setOnFrameDrawnOneShot(Runnable run) {
+ synchronized (mLock) {
+ mOnFrameDrawnListener = run;
+ }
+ }
+
+ public float getAlpha() {
+ synchronized (mLock) {
+ return mAlpha;
+ }
+ }
+
+ public void setAlpha(float alpha) {
+ synchronized (mLock) {
+ mAlpha = alpha;
+ mListener.requestRender();
+ }
+ }
}