Loading camera/CameraBase.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,9 @@ status_t CameraStatus::writeToParcel(android::Parcel* parcel) const { unavailablePhysicalIds16.push_back(String16(id8)); } res = parcel->writeString16Vector(unavailablePhysicalIds16); if (res != OK) return res; res = parcel->writeString16(String16(clientPackage)); return res; } Loading @@ -86,6 +89,12 @@ status_t CameraStatus::readFromParcel(const android::Parcel* parcel) { for (auto& id16 : unavailablePhysicalIds16) { unavailablePhysicalIds.push_back(String8(id16)); } String16 tempClientPackage; res = parcel->readString16(&tempClientPackage); if (res != OK) return res; clientPackage = String8(tempClientPackage); return res; } Loading camera/include/camera/CameraBase.h +8 −2 Original line number Diff line number Diff line Loading @@ -85,11 +85,17 @@ struct CameraStatus : public android::Parcelable { */ std::vector<String8> unavailablePhysicalIds; /** * Client package name if camera is open, otherwise not applicable */ String8 clientPackage; virtual status_t writeToParcel(android::Parcel* parcel) const; virtual status_t readFromParcel(const android::Parcel* parcel); CameraStatus(String8 id, int32_t s, const std::vector<String8>& unavailSubIds) : cameraId(id), status(s), unavailablePhysicalIds(unavailSubIds) {} CameraStatus(String8 id, int32_t s, const std::vector<String8>& unavailSubIds, const String8& clientPkg) : cameraId(id), status(s), unavailablePhysicalIds(unavailSubIds), clientPackage(clientPkg) {} CameraStatus() : status(ICameraServiceListener::STATUS_PRESENT) {} }; Loading services/camera/libcameraservice/CameraService.cpp +24 −1 Original line number Diff line number Diff line Loading @@ -2396,7 +2396,8 @@ Status CameraService::addListenerHelper(const sp<ICameraServiceListener>& listen Mutex::Autolock lock(mCameraStatesLock); for (auto& i : mCameraStates) { cameraStatuses->emplace_back(i.first, mapToInterface(i.second->getStatus()), i.second->getUnavailablePhysicalIds()); mapToInterface(i.second->getStatus()), i.second->getUnavailablePhysicalIds(), openCloseCallbackAllowed ? i.second->getClientPackage() : String8::empty()); } } // Remove the camera statuses that should be hidden from the client, we do Loading Loading @@ -3766,6 +3767,16 @@ bool CameraService::CameraState::removeUnavailablePhysicalId(const String8& phys return count > 0; } void CameraService::CameraState::setClientPackage(const String8& clientPackage) { Mutex::Autolock lock(mStatusLock); mClientPackage = clientPackage; } String8 CameraService::CameraState::getClientPackage() const { Mutex::Autolock lock(mStatusLock); return mClientPackage; } // ---------------------------------------------------------------------------- // ClientEventListener // ---------------------------------------------------------------------------- Loading Loading @@ -4329,6 +4340,18 @@ void CameraService::updateStatus(StatusInternal status, const String8& cameraId, void CameraService::updateOpenCloseStatus(const String8& cameraId, bool open, const String16& clientPackageName) { auto state = getCameraState(cameraId); if (state == nullptr) { ALOGW("%s: Could not update the status for %s, no such device exists", __FUNCTION__, cameraId.string()); return; } if (open) { state->setClientPackage(String8(clientPackageName)); } else { state->setClientPackage(String8::empty()); } Mutex::Autolock lock(mStatusListenerLock); for (const auto& it : mListenerList) { Loading services/camera/libcameraservice/CameraService.h +7 −0 Original line number Diff line number Diff line Loading @@ -634,6 +634,12 @@ private: bool addUnavailablePhysicalId(const String8& physicalId); bool removeUnavailablePhysicalId(const String8& physicalId); /** * Set and get client package name. */ void setClientPackage(const String8& clientPackage); String8 getClientPackage() const; /** * Return the unavailable physical ids for this device. * Loading @@ -646,6 +652,7 @@ private: const int mCost; std::set<String8> mConflicting; std::set<String8> mUnavailablePhysicalIds; String8 mClientPackage; mutable Mutex mStatusLock; CameraParameters mShimParams; const SystemCameraKind mSystemCameraKind; Loading Loading
camera/CameraBase.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,9 @@ status_t CameraStatus::writeToParcel(android::Parcel* parcel) const { unavailablePhysicalIds16.push_back(String16(id8)); } res = parcel->writeString16Vector(unavailablePhysicalIds16); if (res != OK) return res; res = parcel->writeString16(String16(clientPackage)); return res; } Loading @@ -86,6 +89,12 @@ status_t CameraStatus::readFromParcel(const android::Parcel* parcel) { for (auto& id16 : unavailablePhysicalIds16) { unavailablePhysicalIds.push_back(String8(id16)); } String16 tempClientPackage; res = parcel->readString16(&tempClientPackage); if (res != OK) return res; clientPackage = String8(tempClientPackage); return res; } Loading
camera/include/camera/CameraBase.h +8 −2 Original line number Diff line number Diff line Loading @@ -85,11 +85,17 @@ struct CameraStatus : public android::Parcelable { */ std::vector<String8> unavailablePhysicalIds; /** * Client package name if camera is open, otherwise not applicable */ String8 clientPackage; virtual status_t writeToParcel(android::Parcel* parcel) const; virtual status_t readFromParcel(const android::Parcel* parcel); CameraStatus(String8 id, int32_t s, const std::vector<String8>& unavailSubIds) : cameraId(id), status(s), unavailablePhysicalIds(unavailSubIds) {} CameraStatus(String8 id, int32_t s, const std::vector<String8>& unavailSubIds, const String8& clientPkg) : cameraId(id), status(s), unavailablePhysicalIds(unavailSubIds), clientPackage(clientPkg) {} CameraStatus() : status(ICameraServiceListener::STATUS_PRESENT) {} }; Loading
services/camera/libcameraservice/CameraService.cpp +24 −1 Original line number Diff line number Diff line Loading @@ -2396,7 +2396,8 @@ Status CameraService::addListenerHelper(const sp<ICameraServiceListener>& listen Mutex::Autolock lock(mCameraStatesLock); for (auto& i : mCameraStates) { cameraStatuses->emplace_back(i.first, mapToInterface(i.second->getStatus()), i.second->getUnavailablePhysicalIds()); mapToInterface(i.second->getStatus()), i.second->getUnavailablePhysicalIds(), openCloseCallbackAllowed ? i.second->getClientPackage() : String8::empty()); } } // Remove the camera statuses that should be hidden from the client, we do Loading Loading @@ -3766,6 +3767,16 @@ bool CameraService::CameraState::removeUnavailablePhysicalId(const String8& phys return count > 0; } void CameraService::CameraState::setClientPackage(const String8& clientPackage) { Mutex::Autolock lock(mStatusLock); mClientPackage = clientPackage; } String8 CameraService::CameraState::getClientPackage() const { Mutex::Autolock lock(mStatusLock); return mClientPackage; } // ---------------------------------------------------------------------------- // ClientEventListener // ---------------------------------------------------------------------------- Loading Loading @@ -4329,6 +4340,18 @@ void CameraService::updateStatus(StatusInternal status, const String8& cameraId, void CameraService::updateOpenCloseStatus(const String8& cameraId, bool open, const String16& clientPackageName) { auto state = getCameraState(cameraId); if (state == nullptr) { ALOGW("%s: Could not update the status for %s, no such device exists", __FUNCTION__, cameraId.string()); return; } if (open) { state->setClientPackage(String8(clientPackageName)); } else { state->setClientPackage(String8::empty()); } Mutex::Autolock lock(mStatusListenerLock); for (const auto& it : mListenerList) { Loading
services/camera/libcameraservice/CameraService.h +7 −0 Original line number Diff line number Diff line Loading @@ -634,6 +634,12 @@ private: bool addUnavailablePhysicalId(const String8& physicalId); bool removeUnavailablePhysicalId(const String8& physicalId); /** * Set and get client package name. */ void setClientPackage(const String8& clientPackage); String8 getClientPackage() const; /** * Return the unavailable physical ids for this device. * Loading @@ -646,6 +652,7 @@ private: const int mCost; std::set<String8> mConflicting; std::set<String8> mUnavailablePhysicalIds; String8 mClientPackage; mutable Mutex mStatusLock; CameraParameters mShimParams; const SystemCameraKind mSystemCameraKind; Loading