g_mutex_lock(&handle->preview_cb_lock);
while (handle->preview_cb_run) {
+ g_mutex_unlock(&handle->preview_cb_lock);
+
if (_camera_v4l2_wait_frame(handle->device_fd, 5) != CAMERA_ERROR_NONE) {
LOGE("frame wait failed");
+ g_mutex_lock(&handle->preview_cb_lock);
break;
}
if (_camera_v4l2_dqbuf(handle->device_fd, handle->v4l2_type, V4L2_MEMORY_MMAP, &index) != CAMERA_ERROR_NONE) {
LOGE("dqbuf failed");
+ g_mutex_lock(&handle->preview_cb_lock);
break;
}
+ g_mutex_lock(&handle->preview_cb_lock);
+
handle->live_buffer_num++;
LOGD("live buffer num %d", handle->live_buffer_num);
handle = (camera_hal_handle *)camera_handle;
- g_mutex_lock(&handle->preview_cb_lock);
-
if (buffer_index >= handle->preview_buffer_num) {
LOGE("invalid buffer index %d", buffer_index);
g_mutex_unlock(&handle->preview_cb_lock);
ret = _camera_v4l2_qbuf(handle->device_fd,
handle->v4l2_type, V4L2_MEMORY_MMAP, buffer_index);
+ g_mutex_lock(&handle->preview_cb_lock);
+
if (ret == CAMERA_ERROR_NONE) {
handle->live_buffer_num--;
LOGD("qbud done : index %d, live buffer num %d",