diff options
Diffstat (limited to 'src/com/android/camera/CameraScreenNail.java')
-rw-r--r-- | src/com/android/camera/CameraScreenNail.java | 28 |
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(); + } + } } |