summaryrefslogtreecommitdiffstats
path: root/core/java/android
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-10-13 06:02:59 -0400
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-10-13 06:02:59 -0400
commit69e2ef473cd47404ee711bf2464cbfc7c8c83e42 (patch)
treea63bfbcf64b36d11ddc6d1aba95affb51517159f /core/java/android
parent2e778c176d17c295f475141bddda9dca5cd65fce (diff)
parenta6118c6383c6f5703a576d08586a340fd71d28a4 (diff)
downloadframeworks_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.java15
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;