diff options
author | Ruben Brunk <rubenbrunk@google.com> | 2013-08-08 13:07:18 -0700 |
---|---|---|
committer | Ruben Brunk <rubenbrunk@google.com> | 2013-08-16 14:42:28 -0700 |
commit | 0f61d8f14aa368c9cd7076528e8096e10ed100a0 (patch) | |
tree | ed95cb70d56dd3a732f4e1909c96e7889b23ce94 /include/camera | |
parent | 75c16dde986e16ac5fd4d34b06b0cc6a90679866 (diff) | |
download | frameworks_av-0f61d8f14aa368c9cd7076528e8096e10ed100a0.zip frameworks_av-0f61d8f14aa368c9cd7076528e8096e10ed100a0.tar.gz frameworks_av-0f61d8f14aa368c9cd7076528e8096e10ed100a0.tar.bz2 |
Refactor CameraService to handle errors properly.
Bug: 10361136
-Connect calls now return status_t error flags.
Change-Id: Idca453b111e5df31327f6c99ebe853bb2e332b95
Diffstat (limited to 'include/camera')
-rw-r--r-- | include/camera/Camera.h | 6 | ||||
-rw-r--r-- | include/camera/CameraBase.h | 7 | ||||
-rw-r--r-- | include/camera/ICameraService.h | 18 | ||||
-rw-r--r-- | include/camera/ProCamera.h | 7 |
4 files changed, 29 insertions, 9 deletions
diff --git a/include/camera/Camera.h b/include/camera/Camera.h index c34b3ea..81848b3 100644 --- a/include/camera/Camera.h +++ b/include/camera/Camera.h @@ -51,8 +51,14 @@ struct CameraTraits<Camera> typedef CameraListener TCamListener; typedef ICamera TCamUser; typedef ICameraClient TCamCallbacks; + typedef status_t (ICameraService::*TCamConnectService)(const sp<ICameraClient>&, + int, const String16&, int, + /*out*/ + sp<ICamera>&); + static TCamConnectService fnConnectService; }; + class Camera : public CameraBase<Camera>, public BnCameraClient diff --git a/include/camera/CameraBase.h b/include/camera/CameraBase.h index 9b08c0f..1b93157 100644 --- a/include/camera/CameraBase.h +++ b/include/camera/CameraBase.h @@ -54,9 +54,10 @@ template <typename TCam, typename TCamTraits = CameraTraits<TCam> > class CameraBase : public IBinder::DeathRecipient { public: - typedef typename TCamTraits::TCamListener TCamListener; - typedef typename TCamTraits::TCamUser TCamUser; - typedef typename TCamTraits::TCamCallbacks TCamCallbacks; + typedef typename TCamTraits::TCamListener TCamListener; + typedef typename TCamTraits::TCamUser TCamUser; + typedef typename TCamTraits::TCamCallbacks TCamCallbacks; + typedef typename TCamTraits::TCamConnectService TCamConnectService; static sp<TCam> connect(int cameraId, const String16& clientPackageName, diff --git a/include/camera/ICameraService.h b/include/camera/ICameraService.h index fa715b7..0e10699 100644 --- a/include/camera/ICameraService.h +++ b/include/camera/ICameraService.h @@ -71,21 +71,27 @@ public: * clientUid == USE_CALLING_UID, then the calling UID is used instead. Only * trusted callers can set a clientUid other than USE_CALLING_UID. */ - virtual sp<ICamera> connect(const sp<ICameraClient>& cameraClient, + virtual status_t connect(const sp<ICameraClient>& cameraClient, int cameraId, const String16& clientPackageName, - int clientUid) = 0; + int clientUid, + /*out*/ + sp<ICamera>& device) = 0; - virtual sp<IProCameraUser> connect(const sp<IProCameraCallbacks>& cameraCb, + virtual status_t connectPro(const sp<IProCameraCallbacks>& cameraCb, int cameraId, const String16& clientPackageName, - int clientUid) = 0; + int clientUid, + /*out*/ + sp<IProCameraUser>& device) = 0; - virtual sp<ICameraDeviceUser> connect( + virtual status_t connectDevice( const sp<ICameraDeviceCallbacks>& cameraCb, int cameraId, const String16& clientPackageName, - int clientUid) = 0; + int clientUid, + /*out*/ + sp<ICameraDeviceUser>& device) = 0; }; // ---------------------------------------------------------------------------- diff --git a/include/camera/ProCamera.h b/include/camera/ProCamera.h index 3d1652f..d9ee662 100644 --- a/include/camera/ProCamera.h +++ b/include/camera/ProCamera.h @@ -25,6 +25,7 @@ #include <camera/IProCameraUser.h> #include <camera/Camera.h> #include <camera/CameraMetadata.h> +#include <camera/ICameraService.h> #include <gui/CpuConsumer.h> #include <gui/Surface.h> @@ -87,8 +88,14 @@ struct CameraTraits<ProCamera> typedef ProCameraListener TCamListener; typedef IProCameraUser TCamUser; typedef IProCameraCallbacks TCamCallbacks; + typedef status_t (ICameraService::*TCamConnectService)(const sp<IProCameraCallbacks>&, + int, const String16&, int, + /*out*/ + sp<IProCameraUser>&); + static TCamConnectService fnConnectService; }; + class ProCamera : public CameraBase<ProCamera>, public BnProCameraCallbacks |