Camera2: Don't promote weak IBinder ptrs to strong ones
The Binder driver does not support promoting weak pointers into strong
pointers. Occassionally the system would lock up when trying to do this
(when closing the camera app).
Bug: 7289040
Change-Id: I8bc0b5c48616bf0b7f4eed1878ad4994ee635871
diff --git a/services/camera/libcameraservice/CameraService.h b/services/camera/libcameraservice/CameraService.h
index f1e7df6..4dab340 100644
--- a/services/camera/libcameraservice/CameraService.h
+++ b/services/camera/libcameraservice/CameraService.h
@@ -55,7 +55,7 @@
virtual Client* getClientByIdUnsafe(int cameraId);
virtual Mutex* getClientLockById(int cameraId);
- virtual sp<Client> getClientByRemote(const sp<ICameraClient>& cameraClient);
+ virtual sp<Client> getClientByRemote(const wp<IBinder>& cameraClient);
virtual status_t dump(int fd, const Vector<String16>& args);
virtual status_t onTransact(uint32_t code, const Parcel& data,
@@ -143,7 +143,7 @@
int mNumberOfCameras;
// needs to be called with mServiceLock held
- sp<Client> findClientUnsafe(const sp<ICameraClient>& cameraClient, int& outIndex);
+ sp<Client> findClientUnsafe(const wp<IBinder>& cameraClient, int& outIndex);
// atomics to record whether the hardware is allocated to some client.
volatile int32_t mBusy[MAX_CAMERAS];