diff --git a/app/src/main/cpp/camera2/ndkcamera.cpp b/app/src/main/cpp/camera2/ndkcamera.cpp index 7b556194..d57254db 100644 --- a/app/src/main/cpp/camera2/ndkcamera.cpp +++ b/app/src/main/cpp/camera2/ndkcamera.cpp @@ -32,6 +32,7 @@ #ifdef _DEBUG void Auto_AImage_delete(AImage* image) { + XYLOG(XYLOG_SEVERITY_DEBUG,"delete image"); AImage_delete(image); } #else @@ -1053,7 +1054,6 @@ void NdkCamera::close() //XYLOG(XYLOG_SEVERITY_DEBUG, "CameraStatus::AImageReader_delete %s", mCameraId.c_str()); AImageReader_delete(mPreviewImageReader); //XYLOG(XYLOG_SEVERITY_DEBUG, "CameraStatus::End AImageReader_delete %s", mCameraId.c_str()); - mPreviewImageReader = 0; } @@ -1071,9 +1071,17 @@ void NdkCamera::close() if (mImageReader != NULL) { + AImage* image = NULL; + int32_t status; + while ((status = AImageReader_acquireNextImage(mImageReader, &image)) == AMEDIA_OK) { + AImage_delete(image); + image = NULL; + } AImageReader_setImageListener(mImageReader, NULL); + XYLOG(XYLOG_SEVERITY_DEBUG, "clear mImageReader Listener"); //XYLOG(XYLOG_SEVERITY_DEBUG, "CameraStatus::AImageReader_delete %s", mCameraId.c_str()); AImageReader_delete(mImageReader); + XYLOG(XYLOG_SEVERITY_DEBUG, "delete mImageReader"); //XYLOG(XYLOG_SEVERITY_DEBUG, "CameraStatus::End AImageReader_delete %s", mCameraId.c_str()); mImageReader = 0; } @@ -1325,6 +1333,7 @@ void NdkCamera::onImageAvailable(AImageReader* reader) m_photoTaken = true; m_locker.lock(); + XYLOG(XYLOG_SEVERITY_DEBUG,"push image"); mCaptureFrames.push_back(std::shared_ptr(image, Auto_AImage_delete)); m_locker.unlock();