From 553571f7e89a276972464f1e46086ca68ddf8444 Mon Sep 17 00:00:00 2001 From: Javier Ferrer Date: Wed, 14 May 2014 23:59:00 +0100 Subject: camerawrapper: Do not cancel auto focus when preview is not running Change-Id: I9a457b7bab327a9252cf13a6ee46517063f603fa --- camera/CameraWrapper.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/camera/CameraWrapper.cpp b/camera/CameraWrapper.cpp index 2c1b49c..721852e 100644 --- a/camera/CameraWrapper.cpp +++ b/camera/CameraWrapper.cpp @@ -37,6 +37,8 @@ static android::Mutex gCameraWrapperLock; static camera_module_t *gVendorModule = 0; +static bool preview_running = false; + static int camera_device_open(const hw_module_t* module, const char *name, hw_device_t **device); static int camera_device_close(hw_device_t* device); @@ -235,13 +237,17 @@ int camera_msg_type_enabled(struct camera_device * device, int32_t msg_type) int camera_start_preview(struct camera_device * device) { + int rc; ALOGV("%s", __FUNCTION__); ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); if (!device) return -EINVAL; - return VENDOR_CALL(device, start_preview); + rc = VENDOR_CALL(device, start_preview); + if (rc) + preview_running = true; + return rc; } void camera_stop_preview(struct camera_device * device) @@ -253,6 +259,7 @@ void camera_stop_preview(struct camera_device * device) return; VENDOR_CALL(device, stop_preview); + preview_running = false; } int camera_preview_enabled(struct camera_device * device) @@ -347,7 +354,10 @@ int camera_cancel_auto_focus(struct camera_device * device) if (!device) return -EINVAL; - return VENDOR_CALL(device, cancel_auto_focus); + if (preview_running) + return VENDOR_CALL(device, cancel_auto_focus); + else + return 0; } int camera_take_picture(struct camera_device * device) -- cgit v1.1