}
-static recorder_state_e __recorder_state_convert(MMCamcorderStateType mm_state)
+static recorder_state_e __recorder_state_convert(MMCamcorderStateType mm_state, MMCamcorderStateType mm_old_state)
{
recorder_state_e state = RECORDER_STATE_NONE;
switch (mm_state) {
state = RECORDER_STATE_CREATED;
break;
case MM_CAMCORDER_STATE_READY:
- state = RECORDER_STATE_CREATED;
+ if (mm_old_state == MM_CAMCORDER_STATE_PREPARE) {
+ state = RECORDER_STATE_READY;
+ LOGW("destroying pipeline now");
+ } else {
+ state = RECORDER_STATE_CREATED;
+ LOGW("preparing pipeline now");
+ }
break;
case MM_CAMCORDER_STATE_PREPARE:
state = RECORDER_STATE_READY;
static int interrupt_state = -1;
previous_state = handle->state;
- handle->state = __recorder_state_convert(m->state.current);
+ handle->state = __recorder_state_convert(m->state.current, m->state.previous);
recorder_policy_e policy = RECORDER_POLICY_NONE;
if (message == MM_MESSAGE_CAMCORDER_STATE_CHANGED_BY_ASM) {
switch (m->state.code) {
int legacy_recorder_get_state(recorder_h recorder, recorder_state_e *state)
{
int ret = MM_ERROR_NONE;
- MMCamcorderStateType mmstate;
+ MMCamcorderStateType mm_state = MM_CAMCORDER_STATE_NONE;
+ MMCamcorderStateType mm_old_state = MM_CAMCORDER_STATE_NONE;
if (recorder == NULL) {
LOGE("NULL pointer handle");
recorder_s *handle = (recorder_s*)recorder;
- ret = mm_camcorder_get_state(handle->mm_handle, &mmstate);
+ ret = mm_camcorder_get_state2(handle->mm_handle, &mm_state, &mm_old_state);
if (ret != MM_ERROR_NONE)
return __convert_recorder_error_code(__func__, ret);
- *state = __recorder_state_convert(mmstate);
+ *state = __recorder_state_convert(mm_state, mm_old_state);
return RECORDER_ERROR_NONE;
}