summaryrefslogtreecommitdiffstats
path: root/camera/CameraWrapper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'camera/CameraWrapper.cpp')
-rw-r--r--camera/CameraWrapper.cpp14
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)