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

Commit cf70d346 authored by Eino-Ville Talvala's avatar Eino-Ville Talvala Committed by Android (Google) Code Review
Browse files

Camera2: Delete all streams and stop all threads during shutdown.

Bug: 6243944
Change-Id: If13a1f91e8a07c1ec4f91183d1a4b261ec4f6d52
parent 2d1ef137
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -156,6 +156,11 @@ Camera2Client::~Camera2Client() {
    disconnect();

    mFrameProcessor->requestExit();
    mCaptureSequencer->requestExit();
    mJpegProcessor->requestExit();
    mZslProcessor->requestExit();
    mCallbackProcessor->requestExit();

    ALOGI("Camera %d: Closed", mCameraId);
}

@@ -391,6 +396,8 @@ void Camera2Client::disconnect() {

    mCallbackProcessor->deleteStream();

    mZslProcessor->deleteStream();

    mDevice.clear();
    SharedParameters::Lock l(mParameters);
    l.mParameters.state = Parameters::DISCONNECTED;
+6 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ CallbackProcessor::CallbackProcessor(wp<Camera2Client> client):

CallbackProcessor::~CallbackProcessor() {
    ALOGV("%s: Exit", __FUNCTION__);
    deleteStream();
}

void CallbackProcessor::onFrameAvailable() {
@@ -126,6 +127,11 @@ status_t CallbackProcessor::deleteStream() {
        sp<Camera2Device> device = client->getCameraDevice();

        device->deleteStream(mCallbackStreamId);

        mCallbackHeap.clear();
        mCallbackWindow.clear();
        mCallbackConsumer.clear();

        mCallbackStreamId = NO_STREAM;
    }
    return OK;
+6 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ JpegProcessor::JpegProcessor(

JpegProcessor::~JpegProcessor() {
    ALOGV("%s: Exit", __FUNCTION__);
    deleteStream();
}

void JpegProcessor::onFrameAvailable() {
@@ -142,6 +143,11 @@ status_t JpegProcessor::deleteStream() {
        sp<Camera2Device> device = client->getCameraDevice();

        device->deleteStream(mCaptureStreamId);

        mCaptureHeap.clear();
        mCaptureWindow.clear();
        mCaptureConsumer.clear();

        mCaptureStreamId = NO_STREAM;
    }
    return OK;
+5 −0
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ ZslProcessor::ZslProcessor(

ZslProcessor::~ZslProcessor() {
    ALOGV("%s: Exit", __FUNCTION__);
    deleteStream();
}

void ZslProcessor::onFrameAvailable() {
@@ -191,6 +192,10 @@ status_t ZslProcessor::deleteStream() {
        device->deleteStream(mZslReprocessStreamId);
        mZslReprocessStreamId = NO_STREAM;
        device->deleteStream(mZslStreamId);

        mZslWindow.clear();
        mZslConsumer.clear();

        mZslStreamId = NO_STREAM;
    }
    return OK;