am 7c51cb81: Cancel autofocus in stopPreview.
Merge commit '7c51cb81f6aa8030d893463cbc65c0e18e2a6956' * commit '7c51cb81f6aa8030d893463cbc65c0e18e2a6956': Cancel autofocus in stopPreview.
This commit is contained in:
		
				
					committed by
					
						 The Android Open Source Project
						The Android Open Source Project
					
				
			
			
				
	
			
			
			
					commit
					d5b245b737
				
			
							
								
								
									
										32
									
								
								libcamera2/QualcommCameraHardware.cpp
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										32
									
								
								libcamera2/QualcommCameraHardware.cpp
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							| @@ -1069,7 +1069,6 @@ void QualcommCameraHardware::release() | ||||
|     struct msm_ctrl_cmd ctrlCmd; | ||||
|  | ||||
|     if (mCameraRunning) { | ||||
|         cancelAutoFocus(); | ||||
|         if(mRecordingCallback != NULL) { | ||||
|             mRecordFrameLock.lock(); | ||||
|             mReleasedRecordingFrame = true; | ||||
| @@ -1179,6 +1178,16 @@ void QualcommCameraHardware::stopPreviewInternal() | ||||
| { | ||||
|     LOGV("stopPreviewInternal E: %d", mCameraRunning); | ||||
|     if (mCameraRunning) { | ||||
|         // Cancel auto focus. | ||||
|         if (mAutoFocusCallback) { | ||||
|             { | ||||
|                 Mutex::Autolock cbLock(&mCallbackLock); | ||||
|                 mAutoFocusCallback = NULL; | ||||
|                 mAutoFocusCallbackCookie = NULL; | ||||
|             } | ||||
|             cancelAutoFocus(); | ||||
|         } | ||||
|  | ||||
|         mCameraRunning = !native_stop_preview(mCameraControlFd); | ||||
|         if (!mCameraRunning && mPreviewInitialized) { | ||||
|             deinitPreview(); | ||||
| @@ -1196,7 +1205,6 @@ void QualcommCameraHardware::stopPreview() | ||||
|  | ||||
|     { | ||||
|         Mutex::Autolock cbLock(&mCallbackLock); | ||||
|         mAutoFocusCallback = NULL; | ||||
|         mPreviewCallback = NULL; | ||||
|         mPreviewCallbackCookie = NULL; | ||||
|         if(mRecordingCallback != NULL) | ||||
| @@ -1236,6 +1244,11 @@ void QualcommCameraHardware::runAutoFocus() | ||||
|     mCallbackLock.unlock(); | ||||
|     if (cb != NULL) | ||||
|         cb(status, data); | ||||
|  | ||||
|     mCallbackLock.lock(); | ||||
|     mAutoFocusCallback = NULL; | ||||
|     mAutoFocusCallbackCookie = NULL; | ||||
|     mCallbackLock.unlock(); | ||||
| } | ||||
|  | ||||
| void QualcommCameraHardware::cancelAutoFocus() | ||||
| @@ -1263,17 +1276,22 @@ status_t QualcommCameraHardware::autoFocus(autofocus_callback af_cb, | ||||
|     LOGV("autoFocus E"); | ||||
|     Mutex::Autolock l(&mLock); | ||||
|  | ||||
|     if (mCameraControlFd < 0) { | ||||
|         LOGE("not starting autofocus: main control fd %d", mCameraControlFd); | ||||
|         return UNKNOWN_ERROR; | ||||
|     } | ||||
|  | ||||
|     if (mAutoFocusCallback != NULL) { | ||||
|         LOGW("Auto focus is already in progress"); | ||||
|         return mAutoFocusCallback == af_cb ? NO_ERROR : INVALID_OPERATION; | ||||
|     } | ||||
|  | ||||
|     { | ||||
|         Mutex::Autolock cbl(&mCallbackLock); | ||||
|         mAutoFocusCallback = af_cb; | ||||
|         mAutoFocusCallbackCookie = user; | ||||
|     } | ||||
|  | ||||
|     if (mCameraControlFd < 0) { | ||||
|         LOGE("not starting autofocus: main control fd %d", mCameraControlFd); | ||||
|         return UNKNOWN_ERROR; | ||||
|     } | ||||
|  | ||||
|     { | ||||
|         mAutoFocusThreadLock.lock(); | ||||
|         if (!mAutoFocusThreadRunning) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user