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

Commit 6bbaad1b authored by Eino-Ville Talvala's avatar Eino-Ville Talvala Committed by Gerrit Code Review
Browse files

Merge "DO NOT MERGE: CameraService: Link to client binder death at end of connect"

parents 79f424c7 518bcf5f
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -937,6 +937,16 @@ void CameraService::finishConnectLocked(const sp<BasicClient>& client,
        LOG_ALWAYS_FATAL("%s: Invalid state for CameraService, clients not evicted properly",
                __FUNCTION__);
    }

    // And register a death notification for the client callback. Do
    // this last to avoid Binder policy where a nested Binder
    // transaction might be pre-empted to service the client death
    // notification if the client process dies before linkToDeath is
    // invoked.
    sp<IBinder> remoteCallback = client->getRemote();
    if (remoteCallback != nullptr) {
        remoteCallback->linkToDeath(this);
    }
}

status_t CameraService::handleEvictionsLocked(const String8& cameraId, int clientPid,
@@ -1876,11 +1886,9 @@ CameraService::BasicClient::~BasicClient() {

void CameraService::BasicClient::disconnect() {
    if (mDisconnected) {
        ALOGE("%s: Disconnect called on already disconnected client for device %d", __FUNCTION__,
                mCameraId);
        return;
    }
    mDisconnected = true;;
    mDisconnected = true;

    mCameraService->removeByClient(this);
    mCameraService->logDisconnected(String8::format("%d", mCameraId), mClientPid,
+0 −5
Original line number Diff line number Diff line
@@ -859,11 +859,6 @@ status_t CameraService::connectHelper(const sp<CALLBACK>& cameraCb, const String
            return ret;
        }

        sp<IBinder> remoteCallback = client->getRemote();
        if (remoteCallback != nullptr) {
            remoteCallback->linkToDeath(this);
        }

        // Update shim paremeters for legacy clients
        if (effectiveApiLevel == API_1) {
            // Assume we have always received a Client subclass for API1