{
int emit_value = 0;
int device_state = -1;
+ static int interrupt_state = -1;
if (message == MM_MESSAGE_CAMCORDER_STATE_CHANGED &&
(m->state.previous < MM_CAMCORDER_STATE_NONE ||
previous_state = handle->state;
handle->state = __camera_state_convert(m->state.current);
+ if (message != MM_MESSAGE_CAMCORDER_STATE_CHANGED &&
+ interrupt_state == -1) {
+ interrupt_state = previous_state;
+ LOGD("interrupt state %d", interrupt_state);
+ }
+
if (previous_state != handle->state && handle->user_cb[_CAMERA_EVENT_TYPE_STATE_CHANGE]) {
((camera_state_changed_cb)handle->user_cb[_CAMERA_EVENT_TYPE_STATE_CHANGE])(previous_state,
handle->state, policy, handle->user_data[_CAMERA_EVENT_TYPE_STATE_CHANGE]);
if (policy != CAMERA_POLICY_NONE && m->state.current == MM_CAMCORDER_STATE_NULL) {
if (handle->user_cb[_CAMERA_EVENT_TYPE_INTERRUPTED]) {
((camera_interrupted_cb)handle->user_cb[_CAMERA_EVENT_TYPE_INTERRUPTED])(policy,
- previous_state, handle->state, handle->user_data[_CAMERA_EVENT_TYPE_INTERRUPTED]);
+ interrupt_state, handle->state, handle->user_data[_CAMERA_EVENT_TYPE_INTERRUPTED]);
} else {
LOGW("_CAMERA_EVENT_TYPE_INTERRUPTED cb is NULL");
}
+
+ /* initialize interrupt state */
+ interrupt_state = -1;
}
break;
}