summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorWu-cheng Li <wuchengli@google.com>2010-08-23 12:02:21 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-08-23 12:02:21 -0700
commit011df6ab59853b5e2f5654031d842fb1231198c0 (patch)
tree20b5ab370d15e79f25700a590d21266ee60e230f /services
parentdeb7457f43b58ddcb6fbc425321989236cd42f5a (diff)
parentd24afc43d340c4753f09631ad20c525cee943d3e (diff)
downloadframeworks_av-011df6ab59853b5e2f5654031d842fb1231198c0.zip
frameworks_av-011df6ab59853b5e2f5654031d842fb1231198c0.tar.gz
frameworks_av-011df6ab59853b5e2f5654031d842fb1231198c0.tar.bz2
am caaf7fe3: am 271c1bfd: Merge "Handle the camera open failure better." into gingerbread
Merge commit 'caaf7fe3a407c764f643585d050c16f5fb56503c' * commit 'caaf7fe3a407c764f643585d050c16f5fb56503c': 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();