Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cd430850 authored by Wang Han's avatar Wang Han
Browse files

Revert "cameraservice: Avoid calling getSystemCameraKind if the camera was not mapped yet"

This reverts commit 1540b086.

Change-Id: I657940b30f71cdc717c673be6d70738161e2bb62
parent c980a015
Loading
Loading
Loading
Loading
+14 −13
Original line number Diff line number Diff line
@@ -252,14 +252,8 @@ void CameraService::pingCameraServiceProxy() {
    proxyBinder->pingForUserUpdate();
}

void CameraService::broadcastTorchModeStatus(const String8& cameraId, TorchModeStatus status) {
    SystemCameraKind systemCameraKind = SystemCameraKind::PUBLIC;
    status_t res = getSystemCameraKind(cameraId, &systemCameraKind);
    if (res != OK) {
        ALOGE("%s: Could not get system camera kind for camera id %s", __FUNCTION__,
                cameraId.string());
        return;
    }
void CameraService::broadcastTorchModeStatus(const String8& cameraId, TorchModeStatus status,
        SystemCameraKind systemCameraKind) {
    Mutex::Autolock lock(mStatusListenerLock);
    for (auto& i : mListenerList) {
        if (shouldSkipStatusUpdates(systemCameraKind, i->isVendorListener(), i->getListenerPid(),
@@ -353,7 +347,7 @@ void CameraService::addStates(const String8 id) {
        Mutex::Autolock al(mTorchStatusMutex);
        mTorchStatusMap.add(id, TorchModeStatus::AVAILABLE_OFF);

        broadcastTorchModeStatus(id, TorchModeStatus::AVAILABLE_OFF);
        broadcastTorchModeStatus(id, TorchModeStatus::AVAILABLE_OFF, deviceKind);
    }

    updateCameraNumAndIds();
@@ -514,12 +508,19 @@ void CameraService::disconnectClient(const String8& id, sp<BasicClient> clientTo

void CameraService::onTorchStatusChanged(const String8& cameraId,
        TorchModeStatus newStatus) {
    SystemCameraKind systemCameraKind = SystemCameraKind::PUBLIC;
    status_t res = getSystemCameraKind(cameraId, &systemCameraKind);
    if (res != OK) {
        ALOGE("%s: Could not get system camera kind for camera id %s", __FUNCTION__,
                cameraId.string());
        return;
    }
    Mutex::Autolock al(mTorchStatusMutex);
    onTorchStatusChangedLocked(cameraId, newStatus);
    onTorchStatusChangedLocked(cameraId, newStatus, systemCameraKind);
}

void CameraService::onTorchStatusChangedLocked(const String8& cameraId,
        TorchModeStatus newStatus) {
        TorchModeStatus newStatus, SystemCameraKind systemCameraKind) {
    ALOGI("%s: Torch status changed for cameraId=%s, newStatus=%d",
            __FUNCTION__, cameraId.string(), newStatus);

@@ -568,7 +569,7 @@ void CameraService::onTorchStatusChangedLocked(const String8& cameraId,
            }
        }
    }
    broadcastTorchModeStatus(cameraId, newStatus);
    broadcastTorchModeStatus(cameraId, newStatus, systemCameraKind);
}

static bool hasPermissionsForSystemCamera(int callingPid, int callingUid) {
@@ -3805,7 +3806,7 @@ void CameraService::updateStatus(StatusInternal status, const String8& cameraId,
                            TorchModeStatus::AVAILABLE_OFF :
                            TorchModeStatus::NOT_AVAILABLE;
                    if (torchStatus != newTorchStatus) {
                        onTorchStatusChangedLocked(cameraId, newTorchStatus);
                        onTorchStatusChangedLocked(cameraId, newTorchStatus, deviceKind);
                    }
                }
            }
+4 −2
Original line number Diff line number Diff line
@@ -995,7 +995,8 @@ private:
    // handle torch mode status change and invoke callbacks. mTorchStatusMutex
    // should be locked.
    void onTorchStatusChangedLocked(const String8& cameraId,
            hardware::camera::common::V1_0::TorchModeStatus newStatus);
            hardware::camera::common::V1_0::TorchModeStatus newStatus,
            SystemCameraKind systemCameraKind);

    // get a camera's torch status. mTorchStatusMutex should be locked.
    status_t getTorchStatusLocked(const String8 &cameraId,
@@ -1084,7 +1085,8 @@ private:
    static void pingCameraServiceProxy();

    void broadcastTorchModeStatus(const String8& cameraId,
            hardware::camera::common::V1_0::TorchModeStatus status);
            hardware::camera::common::V1_0::TorchModeStatus status,
            SystemCameraKind systemCameraKind);

    void disconnectClient(const String8& id, sp<BasicClient> clientToDisconnect);