From f7daa8787a7673238759a71e3978e78d18c77a55 Mon Sep 17 00:00:00 2001 From: Jeongmo Yang Date: Fri, 17 Mar 2017 14:49:16 +0900 Subject: [PATCH] Udpate for force stop function [Version] 0.10.114 [Profile] Common [Issue Type] Update [Dependency module] N/A Change-Id: I172181134741e21395510d280693174ea61e670d Signed-off-by: Jeongmo Yang --- packaging/libmm-camcorder.spec | 2 +- src/include/mm_camcorder_internal.h | 2 +- src/mm_camcorder_internal.c | 42 +++++++++++-------------------------- src/mm_camcorder_resource.c | 16 ++------------ 4 files changed, 16 insertions(+), 46 deletions(-) diff --git a/packaging/libmm-camcorder.spec b/packaging/libmm-camcorder.spec index 5d09ee4..90843ec 100644 --- a/packaging/libmm-camcorder.spec +++ b/packaging/libmm-camcorder.spec @@ -1,6 +1,6 @@ Name: libmm-camcorder Summary: Camera and recorder library -Version: 0.10.113 +Version: 0.10.114 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/include/mm_camcorder_internal.h b/src/include/mm_camcorder_internal.h index 0e6c7f9..1dac082 100644 --- a/src/include/mm_camcorder_internal.h +++ b/src/include/mm_camcorder_internal.h @@ -1258,7 +1258,7 @@ int _mmcamcorder_video_current_framerate(MMHandleType handle); int _mmcamcorder_video_average_framerate(MMHandleType handle); /* sound focus related function */ -void __mmcamcorder_force_stop(mmf_camcorder_t *hcamcorder); +void __mmcamcorder_force_stop(mmf_camcorder_t *hcamcorder, int state_change_by_system); void _mmcamcorder_sound_focus_cb(int id, mm_sound_focus_type_e focus_type, mm_sound_focus_state_e focus_state, const char *reason_for_change, int option, const char *additional_info, void *user_data); diff --git a/src/mm_camcorder_internal.c b/src/mm_camcorder_internal.c index 706d770..76193cf 100644 --- a/src/mm_camcorder_internal.c +++ b/src/mm_camcorder_internal.c @@ -3298,9 +3298,6 @@ void _mmcamcorder_sound_focus_cb(int id, mm_sound_focus_type_e focus_type, _MMCAMCORDER_LOCK_ASM(hcamcorder); - /* set value to inform a status is changed by asm */ - hcamcorder->state_change_by_system = _MMCAMCORDER_STATE_CHANGE_BY_FOCUS; - /* check the reason */ if (!strncmp(reason_for_change, "ringtone-voip", __MMCAMCORDER_FOCUS_CHANGE_REASON_LEN) || !strncmp(reason_for_change, "ringtone-call", __MMCAMCORDER_FOCUS_CHANGE_REASON_LEN) || @@ -3319,7 +3316,7 @@ void _mmcamcorder_sound_focus_cb(int id, mm_sound_focus_type_e focus_type, _mmcam_dbg_warn("FOCUS is released [type %d, remained focus %d] : Stop pipeline[state:%d]", focus_type, hcamcorder->acquired_focus, current_state); - __mmcamcorder_force_stop(hcamcorder); + __mmcamcorder_force_stop(hcamcorder, _MMCAMCORDER_STATE_CHANGE_BY_FOCUS); _mmcam_dbg_warn("Finish opeartion. Pipeline is released"); } else if (focus_state == FOCUS_IS_ACQUIRED) { @@ -3338,9 +3335,6 @@ void _mmcamcorder_sound_focus_cb(int id, mm_sound_focus_type_e focus_type, _mmcam_dbg_warn("unknown focus state %d", focus_state); } - /* restore value */ - hcamcorder->state_change_by_system = _MMCAMCORDER_STATE_CHANGE_NORMAL; - _MMCAMCORDER_UNLOCK_ASM(hcamcorder); _mmcam_dbg_warn("done"); @@ -3419,9 +3413,6 @@ void _mmcamcorder_sound_focus_watch_cb(int id, mm_sound_focus_type_e focus_type, _MMCAMCORDER_LOCK_ASM(hcamcorder); - /* set value to inform a status is changed by asm */ - hcamcorder->state_change_by_system = _MMCAMCORDER_STATE_CHANGE_BY_FOCUS; - /* check the reason */ if (!strncmp(reason_for_change, "ringtone-voip", __MMCAMCORDER_FOCUS_CHANGE_REASON_LEN) || !strncmp(reason_for_change, "ringtone-call", __MMCAMCORDER_FOCUS_CHANGE_REASON_LEN) || @@ -3446,16 +3437,13 @@ void _mmcamcorder_sound_focus_watch_cb(int id, mm_sound_focus_type_e focus_type, } else if (focus_state == FOCUS_IS_ACQUIRED) { _mmcam_dbg_warn("other process's FOCUS is acquired : Stop pipeline[state:%d]", current_state); - __mmcamcorder_force_stop(hcamcorder); + __mmcamcorder_force_stop(hcamcorder, _MMCAMCORDER_STATE_CHANGE_BY_FOCUS); _mmcam_dbg_warn("Finish opeartion. Pipeline is released"); } else { _mmcam_dbg_warn("unknown focus state %d", focus_state); } - /* restore value */ - hcamcorder->state_change_by_system = _MMCAMCORDER_STATE_CHANGE_NORMAL; - _MMCAMCORDER_UNLOCK_ASM(hcamcorder); _mmcam_dbg_warn("done"); @@ -3483,13 +3471,7 @@ void _mmcamcorder_dpm_camera_policy_changed_cb(const char *name, const char *val if (!strcmp(value, "disallowed")) { _MMCAMCORDER_LOCK_ASM(hcamcorder); - /* set value to inform a status is changed by DPM */ - hcamcorder->state_change_by_system = _MMCAMCORDER_STATE_CHANGE_BY_DPM; - - __mmcamcorder_force_stop(hcamcorder); - - /* restore value */ - hcamcorder->state_change_by_system = _MMCAMCORDER_STATE_CHANGE_NORMAL; + __mmcamcorder_force_stop(hcamcorder, _MMCAMCORDER_STATE_CHANGE_BY_DPM); _MMCAMCORDER_UNLOCK_ASM(hcamcorder); @@ -3775,7 +3757,7 @@ void _mmcamcorder_video_current_framerate_init(MMHandleType handle) } -void __mmcamcorder_force_stop(mmf_camcorder_t *hcamcorder) +void __mmcamcorder_force_stop(mmf_camcorder_t *hcamcorder, int state_change_by_system) { int i = 0; int loop = 0; @@ -3804,7 +3786,10 @@ void __mmcamcorder_force_stop(mmf_camcorder_t *hcamcorder) current_state = _mmcamcorder_get_state((MMHandleType)hcamcorder); - _mmcam_dbg_warn("Force STOP MMFW Camcorder"); + _mmcam_dbg_warn("Force STOP MMFW Camcorder by %d", state_change_by_system); + + /* set state_change_by_system for state change message */ + hcamcorder->state_change_by_system = state_change_by_system; for (loop = 0 ; current_state > MM_CAMCORDER_STATE_NULL && loop < __MMCAMCORDER_CMD_ITERATE_MAX * 3 ; loop++) { itr_cnt = __MMCAMCORDER_CMD_ITERATE_MAX; @@ -3876,6 +3861,9 @@ void __mmcamcorder_force_stop(mmf_camcorder_t *hcamcorder) current_state = _mmcamcorder_get_state((MMHandleType)hcamcorder); } + /* restore */ + hcamcorder->state_change_by_system = _MMCAMCORDER_STATE_CHANGE_NORMAL; + _mmcam_dbg_warn("Done."); return; @@ -4310,9 +4298,6 @@ rm_cb_result _mmcamcorder_rm_callback(int handle, rm_callback_type event_src, _MMCAMCORDER_LOCK_ASM(hcamcorder); - /* set value to inform a status is changed by RM */ - hcamcorder->state_change_by_system = _MMCAMCORDER_STATE_CHANGE_BY_RM; - /* set RM event code for sending it to application */ hcamcorder->interrupt_code = event_src; @@ -4320,15 +4305,12 @@ rm_cb_result _mmcamcorder_rm_callback(int handle, rm_callback_type event_src, switch (event_src) { case RM_CALLBACK_TYPE_RESOURCE_CONFLICT: case RM_CALLBACK_TYPE_RESOURCE_CONFLICT_UD: - __mmcamcorder_force_stop(hcamcorder); + __mmcamcorder_force_stop(hcamcorder, _MMCAMCORDER_STATE_CHANGE_BY_RM); break; default: break; } - /* restore value */ - hcamcorder->state_change_by_system = _MMCAMCORDER_STATE_CHANGE_NORMAL; - _MMCAMCORDER_UNLOCK_ASM(hcamcorder); return cb_res; diff --git a/src/mm_camcorder_resource.c b/src/mm_camcorder_resource.c index b54c46b..c95918e 100644 --- a/src/mm_camcorder_resource.c +++ b/src/mm_camcorder_resource.c @@ -129,14 +129,8 @@ static void __mmcamcorder_resource_state_callback(mrp_res_context_t *context, mr _MMCAMCORDER_LOCK_ASM(camcorder); - /* set value to inform a status is changed by resource manaer */ - camcorder->state_change_by_system = _MMCAMCORDER_STATE_CHANGE_BY_RM; - /* Stop the camera */ - __mmcamcorder_force_stop(camcorder); - - /* restore value */ - camcorder->state_change_by_system = _MMCAMCORDER_STATE_CHANGE_NORMAL; + __mmcamcorder_force_stop(camcorder, _MMCAMCORDER_STATE_CHANGE_BY_RM); _MMCAMCORDER_UNLOCK_ASM(camcorder); @@ -264,14 +258,8 @@ static void __mmcamcorder_resource_release_cb(mrp_res_context_t *cx, const mrp_r _MMCAMCORDER_LOCK_ASM(camcorder); - /* set value to inform a status is changed by resource manager */ - camcorder->state_change_by_system = _MMCAMCORDER_STATE_CHANGE_BY_RM; - /* Stop the camera */ - __mmcamcorder_force_stop(camcorder); - - /* restore value */ - camcorder->state_change_by_system = _MMCAMCORDER_STATE_CHANGE_NORMAL; + __mmcamcorder_force_stop(camcorder, _MMCAMCORDER_STATE_CHANGE_BY_RM); _MMCAMCORDER_UNLOCK_ASM(camcorder); -- 2.7.4