Merge change I9f93ce61 into eclair
* changes: Throttle camera preview frames to the app. Bug 2180302.
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user