}
-static camera_state_e __camera_state_convert(MMCamcorderStateType mm_state)
+static camera_state_e __camera_state_convert(MMCamcorderStateType mm_state, MMCamcorderStateType mm_old_state)
{
camera_state_e state = CAMERA_STATE_NONE;
state = CAMERA_STATE_CREATED;
break;
case MM_CAMCORDER_STATE_READY:
- state = CAMERA_STATE_CREATED;
+ if (mm_old_state == MM_CAMCORDER_STATE_PREPARE) {
+ state = CAMERA_STATE_PREVIEW;
+ LOGW("stopping preview now");
+ } else {
+ state = CAMERA_STATE_CREATED;
+ LOGW("starting preview now");
+ }
break;
case MM_CAMCORDER_STATE_PREPARE:
state = CAMERA_STATE_PREVIEW;
}
previous_state = handle->state;
- handle->state = __camera_state_convert(m->state.current);
+ handle->state = __camera_state_convert(m->state.current, m->state.previous);
if (message != MM_MESSAGE_CAMCORDER_STATE_CHANGED &&
interrupt_state == -1) {
camera_s *handle = (camera_s *)camera;
camera_state_e capi_state = CAMERA_STATE_NONE;
- MMCamcorderStateType mmstate = MM_CAMCORDER_STATE_NONE;
+ MMCamcorderStateType mm_state = MM_CAMCORDER_STATE_NONE;
+ MMCamcorderStateType mm_old_state = MM_CAMCORDER_STATE_NONE;
- mm_camcorder_get_state(handle->mm_handle, &mmstate);
- capi_state = __camera_state_convert(mmstate);
+ mm_camcorder_get_state2(handle->mm_handle, &mm_state, &mm_old_state);
+ capi_state = __camera_state_convert(mm_state, mm_old_state);
if ((handle->state == CAMERA_STATE_CAPTURED || handle->is_capture_completed) &&
(handle->current_capture_count > 0 || handle->is_capture_completed) &&
- mmstate == MM_CAMCORDER_STATE_CAPTURING) {
+ mm_state == MM_CAMCORDER_STATE_CAPTURING) {
capi_state = CAMERA_STATE_CAPTURED;
}