修訂 | 8c2ca9870bdc8d2af308988fbe4a64056ac49938 (tree) |
---|---|
時間 | 2020-07-12 01:05:40 |
作者 | katie <kwchuiaa@conn...> |
Commiter | katie |
reset all runtime variables, free all heaps on close
@@ -169,6 +169,26 @@ bool CameraHardware::PowerOff() | ||
169 | 169 | return true; |
170 | 170 | } |
171 | 171 | |
172 | +void CameraHardware::ResetRuntimeData(){ | |
173 | + mWin = 0; | |
174 | + mPreviewWinFmt = PIXEL_FORMAT_UNKNOWN; | |
175 | + mPreviewWinWidth = 0; | |
176 | + mPreviewWinHeight = 0; | |
177 | + mRawPreviewFrameSize = 0; | |
178 | + mRawPreviewWidth = 0; | |
179 | + mRawPreviewHeight = 0; | |
180 | + mPreviewFrameSize = 0; | |
181 | + mPreviewFmt = PIXEL_FORMAT_UNKNOWN; | |
182 | + mRawPictureBufferSize = 0; | |
183 | + mRecordingFrameSize = 0; | |
184 | + mRecFmt = PIXEL_FORMAT_UNKNOWN; | |
185 | + mJpegPictureBufferSize = 0; | |
186 | + mRecordingEnabled = 0; | |
187 | + mMsgEnabled = 0; | |
188 | + mCurrentPreviewFrame = 0; | |
189 | + mCurrentRecordingFrame = 0; | |
190 | +} | |
191 | + | |
172 | 192 | CameraHardware::CameraHardware(const hw_module_t* module, char* devLocation) : |
173 | 193 | mWin(0), |
174 | 194 | mPreviewWinFmt(PIXEL_FORMAT_UNKNOWN), |
@@ -234,13 +254,8 @@ CameraHardware::CameraHardware(const hw_module_t* module, char* devLocation) : | ||
234 | 254 | initDefaultParameters(); |
235 | 255 | } |
236 | 256 | |
237 | -CameraHardware::~CameraHardware() | |
257 | +void CameraHardware::ReleaseAllHeap() | |
238 | 258 | { |
239 | - ALOGD("CameraHardware::destruct"); | |
240 | - if (mPreviewThread != 0) { | |
241 | - stopPreview(); | |
242 | - } | |
243 | - | |
244 | 259 | // Release all memory heaps |
245 | 260 | if (mRawPreviewHeap) { |
246 | 261 | mRawPreviewHeap->release(mRawPreviewHeap); |
@@ -266,6 +281,16 @@ CameraHardware::~CameraHardware() | ||
266 | 281 | mJpegPictureHeap->release(mJpegPictureHeap); |
267 | 282 | mJpegPictureHeap = NULL; |
268 | 283 | } |
284 | +} | |
285 | + | |
286 | +CameraHardware::~CameraHardware() | |
287 | +{ | |
288 | + ALOGD("CameraHardware::destruct"); | |
289 | + if (mPreviewThread != 0) { | |
290 | + stopPreview(); | |
291 | + } | |
292 | + | |
293 | + ReleaseAllHeap(); | |
269 | 294 | |
270 | 295 | // Power off camera |
271 | 296 | PowerOff(); |
@@ -788,6 +813,8 @@ void CameraHardware::releaseCamera() | ||
788 | 813 | if (mPreviewThread != 0) { |
789 | 814 | stopPreview(); |
790 | 815 | } |
816 | + ReleaseAllHeap(); | |
817 | + ResetRuntimeData(); | |
791 | 818 | } |
792 | 819 | |
793 | 820 | status_t CameraHardware::dumpCamera(int fd) |
@@ -174,6 +174,9 @@ private: | ||
174 | 174 | bool PowerOn(); |
175 | 175 | bool PowerOff(); |
176 | 176 | bool NegotiatePreviewFormat(struct preview_stream_ops* win); |
177 | + void ReleaseAllHeap(); | |
178 | + void ResetRuntimeData(); | |
179 | + | |
177 | 180 | |
178 | 181 | public: |
179 | 182 | /* Constructs Camera instance. |