summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorWu-cheng Li <wuchengli@google.com>2010-08-19 21:48:49 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-08-19 21:48:49 -0700
commitcaaf7fe3a407c764f643585d050c16f5fb56503c (patch)
tree9ffa580537a419e0b277787ce7e2793343faa545 /services
parent6bacd9c6fb799f185be580a0596214b0ce998999 (diff)
parent271c1bfd60eaa20c3f37e685864d992e0770ac00 (diff)
downloadframeworks_base-caaf7fe3a407c764f643585d050c16f5fb56503c.zip
frameworks_base-caaf7fe3a407c764f643585d050c16f5fb56503c.tar.gz
frameworks_base-caaf7fe3a407c764f643585d050c16f5fb56503c.tar.bz2
am 271c1bfd: Merge "Handle the camera open failure better." into gingerbread
Merge commit '271c1bfd60eaa20c3f37e685864d992e0770ac00' into gingerbread-plus-aosp * commit '271c1bfd60eaa20c3f37e685864d992e0770ac00': Handle the camera open failure better.
Diffstat (limited to 'services')
-rw-r--r--services/camera/libcameraservice/CameraService.cpp14
-rw-r--r--services/camera/libcameraservice/CameraService.h1
2 files changed, 11 insertions, 4 deletions
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index 3b3904a..ea2c5d4 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -145,7 +145,12 @@ sp<ICamera> CameraService::connect(
return NULL;
}
- client = new Client(this, cameraClient, cameraId, callingPid);
+ sp<CameraHardwareInterface> hardware = HAL_openCameraHardware(cameraId);
+ if (hardware == NULL) {
+ LOGE("Fail to open camera hardware (id=%d)", cameraId);
+ return NULL;
+ }
+ client = new Client(this, cameraClient, hardware, cameraId, callingPid);
mClient[cameraId] = client;
LOG1("CameraService::connect X");
return client;
@@ -285,16 +290,17 @@ void CameraService::playSound(sound_kind kind) {
// ----------------------------------------------------------------------------
CameraService::Client::Client(const sp<CameraService>& cameraService,
- const sp<ICameraClient>& cameraClient, int cameraId, int clientPid) {
+ const sp<ICameraClient>& cameraClient,
+ const sp<CameraHardwareInterface>& hardware,
+ int cameraId, int clientPid) {
int callingPid = getCallingPid();
LOG1("Client::Client E (pid %d)", callingPid);
mCameraService = cameraService;
mCameraClient = cameraClient;
+ mHardware = hardware;
mCameraId = cameraId;
mClientPid = clientPid;
-
- mHardware = HAL_openCameraHardware(cameraId);
mUseOverlay = mHardware->useOverlay();
mMsgEnabled = 0;
diff --git a/services/camera/libcameraservice/CameraService.h b/services/camera/libcameraservice/CameraService.h
index 77ccf41..0d69836 100644
--- a/services/camera/libcameraservice/CameraService.h
+++ b/services/camera/libcameraservice/CameraService.h
@@ -106,6 +106,7 @@ private:
friend class CameraService;
Client(const sp<CameraService>& cameraService,
const sp<ICameraClient>& cameraClient,
+ const sp<CameraHardwareInterface>& hardware,
int cameraId,
int clientPid);
~Client();