-
-static void __mm_camcorder_signal_handler(int signo)
-{
- pid_t my_pid = getpid();
- pid_t vconf_recorder_pid = -1;
- pid_t vconf_camera_pid = -1;
- int vconf_flash_state = VCONFKEY_CAMERA_FLASH_STATE_OFF;
-
- _mmcam_dbg_warn("start - signo [%d], pid [%d], device type [%d]", signo, my_pid, g_mm_camcorder_type);
-
- /* reset vconf key */
- switch (g_mm_camcorder_type) {
- case MM_VIDEO_DEVICE_NONE:
- vconf_get_int(VCONFKEY_RECORDER_PID, (int *)&vconf_recorder_pid);
- if (my_pid == vconf_recorder_pid) {
- vconf_set_int(VCONFKEY_RECORDER_STATE, VCONFKEY_RECORDER_STATE_NULL);
- vconf_set_int(VCONFKEY_RECORDER_PID, -1);
- _mmcam_dbg_warn("set recorder state NULL");
- } else {
- _mmcam_dbg_warn("different pid : my[%d] vconf[%d]", my_pid, vconf_recorder_pid);
- }
- break;
- case MM_VIDEO_DEVICE_CAMERA0:
- case MM_VIDEO_DEVICE_CAMERA1:
- vconf_get_int(VCONFKEY_CAMERA_FLASH_STATE, &vconf_flash_state);
- vconf_get_int(VCONFKEY_CAMERA_PID, (int *)&vconf_camera_pid);
- if (my_pid == vconf_camera_pid &&
- vconf_flash_state == VCONFKEY_CAMERA_FLASH_STATE_ON) {
- vconf_set_int(VCONFKEY_CAMERA_FLASH_STATE, VCONFKEY_CAMERA_FLASH_STATE_OFF);
- vconf_set_int(VCONFKEY_CAMERA_PID, -1);
- _mmcam_dbg_warn("set camera flash state OFF");
- }
-
- vconf_set_int(VCONFKEY_CAMERA_STATE, VCONFKEY_CAMERA_STATE_NULL);
- _mmcam_dbg_warn("set camera state NULL");
- break;
- default:
- _mmcam_dbg_warn("unknown type [%d]", g_mm_camcorder_type);
- break;
- }
-
- /* call old signal handler */
- switch (signo) {
- case SIGINT:
- sigaction(SIGINT, &mm_camcorder_int_old_action, NULL);
- raise(signo);
- break;
- case SIGABRT:
- sigaction(SIGABRT, &mm_camcorder_abrt_old_action, NULL);
- raise(signo);
- break;
- case SIGSEGV:
- sigaction(SIGSEGV, &mm_camcorder_segv_old_action, NULL);
- raise(signo);
- break;
- case SIGTERM:
- sigaction(SIGTERM, &mm_camcorder_term_old_action, NULL);
- raise(signo);
- break;
- case SIGSYS:
- sigaction(SIGSYS, &mm_camcorder_sys_old_action, NULL);
- raise(signo);
- break;
- default:
- break;
- }
-
- _mmcam_dbg_warn("done");
-
- return;
-}
-
-
-static void _mmcamcorder_constructor()
-{
- struct sigaction mm_camcorder_action;
- mm_camcorder_action.sa_handler = __mm_camcorder_signal_handler;
- mm_camcorder_action.sa_flags = SA_NOCLDSTOP;
-
- _mmcam_dbg_warn("start");
-
- sigemptyset(&mm_camcorder_action.sa_mask);
-
- sigaction(SIGINT, &mm_camcorder_action, &mm_camcorder_int_old_action);
- sigaction(SIGABRT, &mm_camcorder_action, &mm_camcorder_abrt_old_action);
- sigaction(SIGSEGV, &mm_camcorder_action, &mm_camcorder_segv_old_action);
- sigaction(SIGTERM, &mm_camcorder_action, &mm_camcorder_term_old_action);
- sigaction(SIGSYS, &mm_camcorder_action, &mm_camcorder_sys_old_action);
-
- _mmcam_dbg_warn("done");
-
- return;
-}
-
-