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),
initDefaultParameters();
}
-CameraHardware::~CameraHardware()
+void CameraHardware::ReleaseAllHeap()
{
- ALOGD("CameraHardware::destruct");
- if (mPreviewThread != 0) {
- stopPreview();
- }
-
// Release all memory heaps
if (mRawPreviewHeap) {
mRawPreviewHeap->release(mRawPreviewHeap);
mJpegPictureHeap->release(mJpegPictureHeap);
mJpegPictureHeap = NULL;
}
+}
+
+CameraHardware::~CameraHardware()
+{
+ ALOGD("CameraHardware::destruct");
+ if (mPreviewThread != 0) {
+ stopPreview();
+ }
+
+ ReleaseAllHeap();
// Power off camera
PowerOff();
if (mPreviewThread != 0) {
stopPreview();
}
+ ReleaseAllHeap();
+ ResetRuntimeData();
}
status_t CameraHardware::dumpCamera(int fd)