Loading services/camera/libcameraservice/Camera2Client.cpp +8 −16 Original line number Diff line number Diff line Loading @@ -65,10 +65,10 @@ Camera2Client::Camera2Client(const sp<CameraService>& cameraService, status_t Camera2Client::checkPid(const char* checkLocation) const { int callingPid = getCallingPid(); if (callingPid == mClientPid || callingPid == mServicePid) return NO_ERROR; if (callingPid == mClientPid) return NO_ERROR; ALOGE("%s: attempt to use a locked camera from a different process" " (old pid %d, new pid %d, servicePid %d)", checkLocation, mClientPid, callingPid, mServicePid); " (old pid %d, new pid %d)", checkLocation, mClientPid, callingPid); return PERMISSION_DENIED; } Loading Loading @@ -139,19 +139,7 @@ Camera2Client::~Camera2Client() { mDestructionStarted = true; Parameters::State state; // warning: // holding on to locks more than necessary may be hazardous to your health { SharedParameters::Lock l(mParameters); state = l.mParameters.state; } if (state != Parameters::DISCONNECTED) { // Rewrite mClientPid to allow shutdown by CameraService mClientPid = getCallingPid(); disconnect(); } ALOGI("Camera %d: Closed", mCameraId); } Loading Loading @@ -372,7 +360,10 @@ void Camera2Client::disconnect() { ATRACE_CALL(); Mutex::Autolock icl(mICameraLock); status_t res; if ( (res = checkPid(__FUNCTION__) ) != OK) return; // Allow both client and the media server to disconnect at all times int callingPid = getCallingPid(); if (callingPid != mClientPid && callingPid != mServicePid) return; if (mDevice == 0) return; Loading @@ -382,6 +373,7 @@ void Camera2Client::disconnect() { { SharedParameters::Lock l(mParameters); if (l.mParameters.state == Parameters::DISCONNECTED) return; l.mParameters.state = Parameters::DISCONNECTED; } Loading services/camera/libcameraservice/CameraClient.cpp +3 −4 Original line number Diff line number Diff line Loading @@ -102,8 +102,6 @@ CameraClient::~CameraClient() { int callingPid = getCallingPid(); LOG1("CameraClient::~CameraClient E (pid %d, this %p)", callingPid, this); // set mClientPid to let disconnet() tear down the hardware mClientPid = callingPid; disconnect(); LOG1("CameraClient::~CameraClient X (pid %d, this %p)", callingPid, this); } Loading @@ -125,7 +123,7 @@ status_t CameraClient::dump(int fd, const Vector<String16>& args) { status_t CameraClient::checkPid() const { int callingPid = getCallingPid(); if (callingPid == mClientPid || callingPid == mServicePid) return NO_ERROR; if (callingPid == mClientPid) return NO_ERROR; ALOGW("attempt to use a locked camera from a different process" " (old pid %d, new pid %d)", mClientPid, callingPid); Loading Loading @@ -219,7 +217,8 @@ void CameraClient::disconnect() { LOG1("disconnect E (pid %d)", callingPid); Mutex::Autolock lock(mLock); if (checkPid() != NO_ERROR) { // Allow both client and the media server to disconnect at all times if (callingPid != mClientPid && callingPid != mServicePid) { ALOGW("different client - don't disconnect"); return; } Loading Loading
services/camera/libcameraservice/Camera2Client.cpp +8 −16 Original line number Diff line number Diff line Loading @@ -65,10 +65,10 @@ Camera2Client::Camera2Client(const sp<CameraService>& cameraService, status_t Camera2Client::checkPid(const char* checkLocation) const { int callingPid = getCallingPid(); if (callingPid == mClientPid || callingPid == mServicePid) return NO_ERROR; if (callingPid == mClientPid) return NO_ERROR; ALOGE("%s: attempt to use a locked camera from a different process" " (old pid %d, new pid %d, servicePid %d)", checkLocation, mClientPid, callingPid, mServicePid); " (old pid %d, new pid %d)", checkLocation, mClientPid, callingPid); return PERMISSION_DENIED; } Loading Loading @@ -139,19 +139,7 @@ Camera2Client::~Camera2Client() { mDestructionStarted = true; Parameters::State state; // warning: // holding on to locks more than necessary may be hazardous to your health { SharedParameters::Lock l(mParameters); state = l.mParameters.state; } if (state != Parameters::DISCONNECTED) { // Rewrite mClientPid to allow shutdown by CameraService mClientPid = getCallingPid(); disconnect(); } ALOGI("Camera %d: Closed", mCameraId); } Loading Loading @@ -372,7 +360,10 @@ void Camera2Client::disconnect() { ATRACE_CALL(); Mutex::Autolock icl(mICameraLock); status_t res; if ( (res = checkPid(__FUNCTION__) ) != OK) return; // Allow both client and the media server to disconnect at all times int callingPid = getCallingPid(); if (callingPid != mClientPid && callingPid != mServicePid) return; if (mDevice == 0) return; Loading @@ -382,6 +373,7 @@ void Camera2Client::disconnect() { { SharedParameters::Lock l(mParameters); if (l.mParameters.state == Parameters::DISCONNECTED) return; l.mParameters.state = Parameters::DISCONNECTED; } Loading
services/camera/libcameraservice/CameraClient.cpp +3 −4 Original line number Diff line number Diff line Loading @@ -102,8 +102,6 @@ CameraClient::~CameraClient() { int callingPid = getCallingPid(); LOG1("CameraClient::~CameraClient E (pid %d, this %p)", callingPid, this); // set mClientPid to let disconnet() tear down the hardware mClientPid = callingPid; disconnect(); LOG1("CameraClient::~CameraClient X (pid %d, this %p)", callingPid, this); } Loading @@ -125,7 +123,7 @@ status_t CameraClient::dump(int fd, const Vector<String16>& args) { status_t CameraClient::checkPid() const { int callingPid = getCallingPid(); if (callingPid == mClientPid || callingPid == mServicePid) return NO_ERROR; if (callingPid == mClientPid) return NO_ERROR; ALOGW("attempt to use a locked camera from a different process" " (old pid %d, new pid %d)", mClientPid, callingPid); Loading Loading @@ -219,7 +217,8 @@ void CameraClient::disconnect() { LOG1("disconnect E (pid %d)", callingPid); Mutex::Autolock lock(mLock); if (checkPid() != NO_ERROR) { // Allow both client and the media server to disconnect at all times if (callingPid != mClientPid && callingPid != mServicePid) { ALOGW("different client - don't disconnect"); return; } Loading