From 4626825c2f52c2875735b34e84301cf759c2d571 Mon Sep 17 00:00:00 2001 From: Wu-cheng Li Date: Mon, 11 Jul 2011 05:42:20 +0800 Subject: Fix black preview in Goggles. Goggles uses the following call sequence and that should be valid. 1. setPreviewCallback 2. startPreview 3. setPreviewDisplay The problem is preview was stopped in setPreviewWindow. No matter CAMERA_MSG_PREVIEW_FRAME or CAMERA_MSG_VIDEO_FRAME is enabled or not, defer the startPreview if preview window is not set. Change-Id: I332a6393f9923a9a1910e53e8da3b2783bfabff7 --- libcamera/SecCameraHWInterface.cpp | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) (limited to 'libcamera') diff --git a/libcamera/SecCameraHWInterface.cpp b/libcamera/SecCameraHWInterface.cpp index c736e8b..495fe88 100644 --- a/libcamera/SecCameraHWInterface.cpp +++ b/libcamera/SecCameraHWInterface.cpp @@ -484,17 +484,6 @@ void CameraHardwareSec::enableMsgType(int32_t msgType) __func__, msgType, mMsgEnabled); mMsgEnabled |= msgType; - mPreviewLock.lock(); - if ((msgType & (CAMERA_MSG_PREVIEW_FRAME | CAMERA_MSG_VIDEO_FRAME)) && - mPreviewRunning && mPreviewStartDeferred) { - LOGV("%s: starting deferred preview", __func__); - if (startPreviewInternal() == OK) { - mPreviewStartDeferred = false; - mPreviewCondition.signal(); - } - } - mPreviewLock.unlock(); - LOGV("%s : mMsgEnabled = 0x%x", __func__, mMsgEnabled); } @@ -749,9 +738,7 @@ status_t CameraHardwareSec::startPreview() mPreviewRunning = true; mPreviewStartDeferred = false; - if (!mPreviewWindow && - !(mMsgEnabled & CAMERA_MSG_PREVIEW_FRAME) && - !(mMsgEnabled & CAMERA_MSG_VIDEO_FRAME)) { + if (!mPreviewWindow) { LOGI("%s : deferring", __func__); mPreviewStartDeferred = true; mPreviewLock.unlock(); -- cgit v1.1