summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/PhotoModule.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/PhotoModule.java')
-rw-r--r--src/com/android/camera/PhotoModule.java41
1 files changed, 29 insertions, 12 deletions
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index 5a1013b63..ababaf291 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -237,6 +237,28 @@ public class PhotoModule
}
private OpenCameraThread mOpenCameraThread = null;
+ private boolean mEnableThreadedCameraStartup = true;
+
+ private void startOpenCameraThread() {
+ mOpenCameraThread = new OpenCameraThread();
+ if (mEnableThreadedCameraStartup) {
+ mOpenCameraThread.start();
+ } else {
+ mOpenCameraThread.run();
+ }
+ }
+
+ private void stopOpenCameraThread() {
+ if (mOpenCameraThread != null && mEnableThreadedCameraStartup) {
+ try {
+ mOpenCameraThread.join();
+ } catch (InterruptedException ex) {
+ // ignore
+ }
+ }
+ mOpenCameraThread = null;
+ }
+
/**
* An unpublished intent flag requesting to return as soon as capturing
* is completed.
@@ -520,9 +542,11 @@ public class PhotoModule
// Max brightness
mActivity.initMaxBrightness(mPreferences);
+ mEnableThreadedCameraStartup = mActivity.getResources().getBoolean(
+ R.bool.enableThreadedCameraStartup);
+
if (mOpenCameraThread == null && !mActivity.mIsModuleSwitchInProgress) {
- mOpenCameraThread = new OpenCameraThread();
- mOpenCameraThread.start();
+ startOpenCameraThread();
}
initializeControlByIntent();
mQuickCapture = mActivity.getIntent().getBooleanExtra(EXTRA_QUICK_CAPTURE, false);
@@ -1886,8 +1910,7 @@ public class PhotoModule
if (mOpenCameraFail || mCameraDisabled) return;
if (mOpenCameraThread == null) {
- mOpenCameraThread = new OpenCameraThread();
- mOpenCameraThread.start();
+ startOpenCameraThread();
}
mJpegPictureCallbackTime = 0;
@@ -1950,14 +1973,8 @@ public class PhotoModule
Log.v(TAG, "On pause.");
mUI.showPreviewCover();
- try {
- if (mOpenCameraThread != null) {
- mOpenCameraThread.join();
- }
- } catch (InterruptedException ex) {
- // ignore
- }
- mOpenCameraThread = null;
+ stopOpenCameraThread();
+
// Reset the focus first. Camera CTS does not guarantee that
// cancelAutoFocus is allowed after preview stops.
if (mCameraDevice != null && mCameraState != PREVIEW_STOPPED) {