Merge change I9f93ce61 into eclair

* changes:
  Throttle camera preview frames to the app. Bug 2180302.
This commit is contained in:
Android (Google) Code Review
2009-10-13 06:02:59 -04:00

View File

@@ -229,7 +229,9 @@ public class Camera {
public final void setPreviewCallback(PreviewCallback cb) { public final void setPreviewCallback(PreviewCallback cb) {
mPreviewCallback = cb; mPreviewCallback = cb;
mOneShot = false; 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: case CAMERA_MSG_PREVIEW_FRAME:
if (mPreviewCallback != null) { if (mPreviewCallback != null) {
mPreviewCallback.onPreviewFrame((byte[])msg.obj, mCamera); PreviewCallback cb = mPreviewCallback;
if (mOneShot) { if (mOneShot) {
// Clear the callback variable before the callback
// in case the app calls setPreviewCallback from
// the callback function
mPreviewCallback = null; 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; return;