diff options
author | Brint E. Kriebel <bekit@cyngn.com> | 2014-11-18 13:50:33 -0800 |
---|---|---|
committer | Brint E. Kriebel <bekit@cyngn.com> | 2014-11-18 13:50:33 -0800 |
commit | 2e69425998de767bbef41ddaa0ed498baa17b9e7 (patch) | |
tree | 512fb746a98c4a97f1f233968f4fdeb2db4cb8e4 | |
parent | b86bd077747261522962c737c3fae38e05d89cb8 (diff) | |
parent | e95ccbc2275afdff17ed106cbc0266de58aab24e (diff) | |
download | android_packages_apps_Camera2-shipping/cm-11.0.tar.gz android_packages_apps_Camera2-shipping/cm-11.0.tar.bz2 android_packages_apps_Camera2-shipping/cm-11.0.zip |
Merge branch 'cm-11.0' into stable/cm-11.0cm-11.0-XNPH05Q-tomato-9828f8e9ccstable/cm-11.0-XNF8Yshipping/cm-11.0
-rw-r--r-- | res/values/config.xml | 4 | ||||
-rw-r--r-- | src/com/android/camera/PhotoModule.java | 41 |
2 files changed, 33 insertions, 12 deletions
diff --git a/res/values/config.xml b/res/values/config.xml index 9bb3b8b73..fde705275 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -43,4 +43,8 @@ <bool name="enableHDRWithZSL">false</bool> <!-- Enable histogram support --> <bool name="enableHistogram">false</bool> + + <!-- Controls whether or not the HAL allows a multi-threaded + camera startup --> + <bool name="enableThreadedCameraStartup">true</bool> </resources> 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) { |