summaryrefslogtreecommitdiff
path: root/camera/CameraBase.cpp
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2017-02-01 15:27:41 -0800
committerEino-Ville Talvala <etalvala@google.com>2017-02-02 12:13:16 -0800
commitf86177dd930680bf939ef33b9977db27628d7aff (patch)
tree113868c2d2eef459f6538acd0a6d9ff9ffb1d84d /camera/CameraBase.cpp
parent5337437a1cd62a96a0c772e2ff0738e372d8aa93 (diff)
CameraBase: Don't return an sp<> by reference
If the server dies, the binder death callback clears out the global camera service sp<>, and any current references to it will become quite unhappy. Test: Camera CTS passes Bug: 31992879 Change-Id: I2966bed35d0319e3f26e3d4b1b8dc08006a22348
Diffstat (limited to 'camera/CameraBase.cpp')
-rw-r--r--camera/CameraBase.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/camera/CameraBase.cpp b/camera/CameraBase.cpp
index 15d7715ac4..72951fcbf7 100644
--- a/camera/CameraBase.cpp
+++ b/camera/CameraBase.cpp
@@ -86,7 +86,7 @@ namespace {
// establish binder interface to camera service
template <typename TCam, typename TCamTraits>
-const sp<::android::hardware::ICameraService>& CameraBase<TCam, TCamTraits>::getCameraService()
+const sp<::android::hardware::ICameraService> CameraBase<TCam, TCamTraits>::getCameraService()
{
Mutex::Autolock _l(gLock);
if (gCameraService.get() == 0) {
@@ -118,7 +118,7 @@ sp<TCam> CameraBase<TCam, TCamTraits>::connect(int cameraId,
ALOGV("%s: connect", __FUNCTION__);
sp<TCam> c = new TCam(cameraId);
sp<TCamCallbacks> cl = c;
- const sp<::android::hardware::ICameraService>& cs = getCameraService();
+ const sp<::android::hardware::ICameraService> cs = getCameraService();
binder::Status ret;
if (cs != nullptr) {
@@ -226,7 +226,7 @@ int CameraBase<TCam, TCamTraits>::getNumberOfCameras() {
template <typename TCam, typename TCamTraits>
status_t CameraBase<TCam, TCamTraits>::getCameraInfo(int cameraId,
struct hardware::CameraInfo* cameraInfo) {
- const sp<::android::hardware::ICameraService>& cs = getCameraService();
+ const sp<::android::hardware::ICameraService> cs = getCameraService();
if (cs == 0) return UNKNOWN_ERROR;
binder::Status res = cs->getCameraInfo(cameraId, cameraInfo);
return res.isOk() ? OK : res.serviceSpecificErrorCode();