From 0f61d8f14aa368c9cd7076528e8096e10ed100a0 Mon Sep 17 00:00:00 2001 From: Ruben Brunk Date: Thu, 8 Aug 2013 13:07:18 -0700 Subject: Refactor CameraService to handle errors properly. Bug: 10361136 -Connect calls now return status_t error flags. Change-Id: Idca453b111e5df31327f6c99ebe853bb2e332b95 --- camera/CameraBase.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'camera/CameraBase.cpp') diff --git a/camera/CameraBase.cpp b/camera/CameraBase.cpp index c25c5fd..55376b0 100644 --- a/camera/CameraBase.cpp +++ b/camera/CameraBase.cpp @@ -92,20 +92,25 @@ const sp& CameraBase::getCameraService() template sp CameraBase::connect(int cameraId, - const String16& clientPackageName, + const String16& clientPackageName, int clientUid) { ALOGV("%s: connect", __FUNCTION__); sp c = new TCam(cameraId); sp cl = c; + status_t status = NO_ERROR; const sp& cs = getCameraService(); + if (cs != 0) { - c->mCamera = cs->connect(cl, cameraId, clientPackageName, clientUid); + TCamConnectService fnConnectService = TCamTraits::fnConnectService; + status = (cs.get()->*fnConnectService)(cl, cameraId, clientPackageName, clientUid, + /*out*/ c->mCamera); } - if (c->mCamera != 0) { + if (status == OK && c->mCamera != 0) { c->mCamera->asBinder()->linkToDeath(c); c->mStatus = NO_ERROR; } else { + ALOGW("An error occurred while connecting to camera: %d", cameraId); c.clear(); } return c; -- cgit v1.1