From: katie Date: Sat, 11 Jul 2020 16:05:40 +0000 (+0200) Subject: reset all runtime variables, free all heaps on close X-Git-Tag: android-x86-7.1-r5 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=refs%2Fheads%2Fnougat-x86;p=android-x86%2Fhardware-libcamera.git reset all runtime variables, free all heaps on close --- diff --git a/CameraHardware.cpp b/CameraHardware.cpp index a54aae7..5d3c076 100644 --- a/CameraHardware.cpp +++ b/CameraHardware.cpp @@ -169,6 +169,26 @@ bool CameraHardware::PowerOff() return true; } +void CameraHardware::ResetRuntimeData(){ + mWin = 0; + mPreviewWinFmt = PIXEL_FORMAT_UNKNOWN; + mPreviewWinWidth = 0; + mPreviewWinHeight = 0; + mRawPreviewFrameSize = 0; + mRawPreviewWidth = 0; + mRawPreviewHeight = 0; + mPreviewFrameSize = 0; + mPreviewFmt = PIXEL_FORMAT_UNKNOWN; + mRawPictureBufferSize = 0; + mRecordingFrameSize = 0; + mRecFmt = PIXEL_FORMAT_UNKNOWN; + mJpegPictureBufferSize = 0; + mRecordingEnabled = 0; + mMsgEnabled = 0; + mCurrentPreviewFrame = 0; + mCurrentRecordingFrame = 0; +} + CameraHardware::CameraHardware(const hw_module_t* module, char* devLocation) : mWin(0), mPreviewWinFmt(PIXEL_FORMAT_UNKNOWN), @@ -234,13 +254,8 @@ CameraHardware::CameraHardware(const hw_module_t* module, char* devLocation) : initDefaultParameters(); } -CameraHardware::~CameraHardware() +void CameraHardware::ReleaseAllHeap() { - ALOGD("CameraHardware::destruct"); - if (mPreviewThread != 0) { - stopPreview(); - } - // Release all memory heaps if (mRawPreviewHeap) { mRawPreviewHeap->release(mRawPreviewHeap); @@ -266,6 +281,16 @@ CameraHardware::~CameraHardware() mJpegPictureHeap->release(mJpegPictureHeap); mJpegPictureHeap = NULL; } +} + +CameraHardware::~CameraHardware() +{ + ALOGD("CameraHardware::destruct"); + if (mPreviewThread != 0) { + stopPreview(); + } + + ReleaseAllHeap(); // Power off camera PowerOff(); @@ -788,6 +813,8 @@ void CameraHardware::releaseCamera() if (mPreviewThread != 0) { stopPreview(); } + ReleaseAllHeap(); + ResetRuntimeData(); } status_t CameraHardware::dumpCamera(int fd) diff --git a/CameraHardware.h b/CameraHardware.h index f3cb20e..5e17a69 100644 --- a/CameraHardware.h +++ b/CameraHardware.h @@ -174,6 +174,9 @@ private: bool PowerOn(); bool PowerOff(); bool NegotiatePreviewFormat(struct preview_stream_ops* win); + void ReleaseAllHeap(); + void ResetRuntimeData(); + public: /* Constructs Camera instance.