diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-10-13 06:02:59 -0400 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-10-13 06:02:59 -0400 |
commit | 69e2ef473cd47404ee711bf2464cbfc7c8c83e42 (patch) | |
tree | a63bfbcf64b36d11ddc6d1aba95affb51517159f /core/java/android | |
parent | 2e778c176d17c295f475141bddda9dca5cd65fce (diff) | |
parent | a6118c6383c6f5703a576d08586a340fd71d28a4 (diff) | |
download | frameworks_base-69e2ef473cd47404ee711bf2464cbfc7c8c83e42.zip frameworks_base-69e2ef473cd47404ee711bf2464cbfc7c8c83e42.tar.gz frameworks_base-69e2ef473cd47404ee711bf2464cbfc7c8c83e42.tar.bz2 |
Merge change I9f93ce61 into eclair
* changes:
Throttle camera preview frames to the app. Bug 2180302.
Diffstat (limited to 'core/java/android')
-rw-r--r-- | core/java/android/hardware/Camera.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java index 3806fa8..0c1c7ec 100644 --- a/core/java/android/hardware/Camera.java +++ b/core/java/android/hardware/Camera.java @@ -229,7 +229,9 @@ public class Camera { public final void setPreviewCallback(PreviewCallback cb) { mPreviewCallback = cb; mOneShot = false; - setHasPreviewCallback(cb != null, false); + // Always use one-shot mode. We fake camera preview mode by + // doing one-shot preview continuously. + setHasPreviewCallback(cb != null, true); } /** @@ -280,10 +282,19 @@ public class Camera { case CAMERA_MSG_PREVIEW_FRAME: if (mPreviewCallback != null) { - mPreviewCallback.onPreviewFrame((byte[])msg.obj, mCamera); + PreviewCallback cb = mPreviewCallback; if (mOneShot) { + // Clear the callback variable before the callback + // in case the app calls setPreviewCallback from + // the callback function mPreviewCallback = null; + } else { + // We're faking the camera preview mode to prevent + // the app from being flooded with preview frames. + // Set to oneshot mode again. + setHasPreviewCallback(true, true); } + cb.onPreviewFrame((byte[])msg.obj, mCamera); } return; |