diff options
Diffstat (limited to 'camera/CameraWrapper.cpp')
-rw-r--r-- | camera/CameraWrapper.cpp | 14 |
1 files 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) |