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

Commit 6706009f authored by Ruben Brunk's avatar Ruben Brunk Committed by Eino-Ville Talvala
Browse files

DO NOT MERGE: camera2: Fix race with stream deletion during disconnect.

Bug: 11856804

- Shutdown order in Camera2Client allows a stream to be
  deleted before the corresponding processing thread has
  quit.  This can result in updates being called on the
  processor thread without a valid stream.

Change-Id: Ie4e649771f4321498659211f2a37ed89a6d956c4
parent 81d75430
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -406,12 +406,6 @@ void Camera2Client::disconnect() {
        l.mParameters.state = Parameters::DISCONNECTED;
    }

    mStreamingProcessor->deletePreviewStream();
    mStreamingProcessor->deleteRecordingStream();
    mJpegProcessor->deleteStream();
    mCallbackProcessor->deleteStream();
    mZslProcessor->deleteStream();

    mStreamingProcessor->requestExit();
    mFrameProcessor->requestExit();
    mCaptureSequencer->requestExit();
@@ -428,6 +422,14 @@ void Camera2Client::disconnect() {
    mZslProcessorThread->join();
    mCallbackProcessor->join();

    ALOGV("Camera %d: Deleting streams", mCameraId);

    mStreamingProcessor->deletePreviewStream();
    mStreamingProcessor->deleteRecordingStream();
    mJpegProcessor->deleteStream();
    mCallbackProcessor->deleteStream();
    mZslProcessor->deleteStream();

    ALOGV("Camera %d: Disconnecting device", mCameraId);

    mDevice->disconnect();