Merge "CameraManager: Ensure all public methods connect to camera service." into mnc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
ea7547f155
@@ -802,12 +802,9 @@ public final class CameraManager {
|
|||||||
*/
|
*/
|
||||||
public ICameraService getCameraService() {
|
public ICameraService getCameraService() {
|
||||||
synchronized(mLock) {
|
synchronized(mLock) {
|
||||||
|
connectCameraServiceLocked();
|
||||||
if (mCameraService == null) {
|
if (mCameraService == null) {
|
||||||
Log.i(TAG, "getCameraService: Reconnecting to camera service");
|
Log.e(TAG, "Camera service is unavailable");
|
||||||
connectCameraServiceLocked();
|
|
||||||
if (mCameraService == null) {
|
|
||||||
Log.e(TAG, "Camera service is unavailable");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return mCameraService;
|
return mCameraService;
|
||||||
}
|
}
|
||||||
@@ -815,11 +812,16 @@ public final class CameraManager {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Connect to the camera service if it's available, and set up listeners.
|
* Connect to the camera service if it's available, and set up listeners.
|
||||||
|
* If the service is already connected, do nothing.
|
||||||
*
|
*
|
||||||
* <p>Sets mCameraService to a valid pointer or null if the connection does not succeed.</p>
|
* <p>Sets mCameraService to a valid pointer or null if the connection does not succeed.</p>
|
||||||
*/
|
*/
|
||||||
private void connectCameraServiceLocked() {
|
private void connectCameraServiceLocked() {
|
||||||
mCameraService = null;
|
// Only reconnect if necessary
|
||||||
|
if (mCameraService != null) return;
|
||||||
|
|
||||||
|
Log.i(TAG, "Connecting to camera service");
|
||||||
|
|
||||||
IBinder cameraServiceBinder = ServiceManager.getService(CAMERA_SERVICE_BINDER_NAME);
|
IBinder cameraServiceBinder = ServiceManager.getService(CAMERA_SERVICE_BINDER_NAME);
|
||||||
if (cameraServiceBinder == null) {
|
if (cameraServiceBinder == null) {
|
||||||
// Camera service is now down, leave mCameraService as null
|
// Camera service is now down, leave mCameraService as null
|
||||||
@@ -1098,6 +1100,8 @@ public final class CameraManager {
|
|||||||
*/
|
*/
|
||||||
public void registerAvailabilityCallback(AvailabilityCallback callback, Handler handler) {
|
public void registerAvailabilityCallback(AvailabilityCallback callback, Handler handler) {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
|
connectCameraServiceLocked();
|
||||||
|
|
||||||
Handler oldHandler = mCallbackMap.put(callback, handler);
|
Handler oldHandler = mCallbackMap.put(callback, handler);
|
||||||
// For new callbacks, provide initial availability information
|
// For new callbacks, provide initial availability information
|
||||||
if (oldHandler == null) {
|
if (oldHandler == null) {
|
||||||
@@ -1120,6 +1124,8 @@ public final class CameraManager {
|
|||||||
|
|
||||||
public void registerTorchCallback(TorchCallback callback, Handler handler) {
|
public void registerTorchCallback(TorchCallback callback, Handler handler) {
|
||||||
synchronized(mLock) {
|
synchronized(mLock) {
|
||||||
|
connectCameraServiceLocked();
|
||||||
|
|
||||||
Handler oldHandler = mTorchCallbackMap.put(callback, handler);
|
Handler oldHandler = mTorchCallbackMap.put(callback, handler);
|
||||||
// For new callbacks, provide initial torch information
|
// For new callbacks, provide initial torch information
|
||||||
if (oldHandler == null) {
|
if (oldHandler == null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user