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

Commit d02c812a authored by Wu-cheng Li's avatar Wu-cheng Li
Browse files

Only enable CAMERA_MSG_PREVIEW_FRAME when necessary.

Now camera driver uses ANativeWindow for display.
CameraService should not request preview callback from
camera hardware if applications have not requested it.

bug:2951018
Change-Id: I85f74ea4a61104feca018867bc9d6dfe3a9479f5
parent de6386b8
Loading
Loading
Loading
Loading
+5 −14
Original line number Diff line number Diff line
@@ -567,18 +567,12 @@ void CameraService::Client::setPreviewCallbackFlag(int callback_flag) {
    if (checkPidAndHardware() != NO_ERROR) return;

    mPreviewCallbackFlag = callback_flag;

    // If we don't use overlay, we always need the preview frame for display.
    // If we do use overlay, we only need the preview frame if the user
    // wants the data.
    if (mUseOverlay) {
    if (mPreviewCallbackFlag & FRAME_CALLBACK_FLAG_ENABLE_MASK) {
        enableMsgType(CAMERA_MSG_PREVIEW_FRAME);
    } else {
        disableMsgType(CAMERA_MSG_PREVIEW_FRAME);
    }
}
}

// start preview mode
status_t CameraService::Client::startPreview() {
@@ -636,7 +630,6 @@ status_t CameraService::Client::startPreviewMode() {
    } else {
        // XXX: Set the orientation of the ANativeWindow.
        mHardware->setPreviewWindow(mPreviewWindow);
        enableMsgType(CAMERA_MSG_PREVIEW_FRAME);
        result = mHardware->startPreview();
    }
    return result;
@@ -1025,10 +1018,8 @@ void CameraService::Client::handlePreviewData(const sp<IMemory>& mem) {
        mPreviewCallbackFlag &= ~(FRAME_CALLBACK_FLAG_ONE_SHOT_MASK |
                                  FRAME_CALLBACK_FLAG_COPY_OUT_MASK |
                                  FRAME_CALLBACK_FLAG_ENABLE_MASK);
        if (mUseOverlay) {
        disableMsgType(CAMERA_MSG_PREVIEW_FRAME);
    }
    }

    if (c != 0) {
        // Is the received frame copied out or not?