Fix camera start bs issue
[profile/ivi/camera.git] / src / cam_app.c
index 2e80789..276afe9 100755 (executable)
@@ -688,7 +688,7 @@ gboolean cam_app_init(void *data)
        return TRUE;
 }
 
-gboolean cam_app_start(void *data)
+Eina_Bool cam_app_start(void *data)
 {
        CAM_TA_ACUM_ITEM_BEGIN("#########cam_app_start", 0);
 
@@ -698,9 +698,14 @@ gboolean cam_app_start(void *data)
 
        debug_fenter(LOG_CAM);
 
-       cam_retvm_if(ad == NULL, FALSE, "appdata is NULL");
+       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
        camapp = ad->camapp_handle;
-       cam_retvm_if(camapp == NULL, FALSE, "camapp_handle is NULL");
+       cam_retvm_if(camapp == NULL, ECORE_CALLBACK_CANCEL, "camapp_handle is NULL");
+
+       if (!cam_condition_check_to_start_camera(ad)) {
+               cam_critical(LOG_CAM, "cannot start camera");
+               return ECORE_CALLBACK_CANCEL;
+       }
 
        /*init guideline value*/
 #ifdef GUIDE_LINE_ENALBE
@@ -712,7 +717,7 @@ gboolean cam_app_start(void *data)
                if (!cam_mm_create(CAM_DEVICE_MEGA, camapp->camera_mode)) {
                        cam_critical(LOG_MM, "cam_mm_create failed");
                        cam_app_notice_popup(ad, "UNABLE TO LAUNCH CAMERA", cam_app_timeout_notice_response_cb);
-                       return FALSE;
+                       return ECORE_CALLBACK_CANCEL;
                }
        }
        CAM_TA_ACUM_ITEM_END("    cam_mm_create", 0);
@@ -721,7 +726,7 @@ gboolean cam_app_start(void *data)
        if (!cam_callback_init(ad)) {
                cam_critical(LOG_CAM, "cam_init_mm_callback failed");
                cam_app_notice_popup(ad, "UNABLE TO START PREVIEW", cam_app_timeout_notice_response_cb);
-               return FALSE;
+               return ECORE_CALLBACK_CANCEL;
        }
        CAM_TA_ACUM_ITEM_END("    cam_callback_init", 0);
 
@@ -738,18 +743,17 @@ gboolean cam_app_start(void *data)
        *       TODO: this func dealt with efl ui api, but cam_app_start is called in thread.
        *               We should consider it carefully.
        */
-       cam_continuous_af_start(ad);
        if (!cam_app_preview_start(ad)) {
                if (ad->is_calling == CAMERA_ERROR_SOUND_POLICY ||ad->is_calling == RECORDER_ERROR_SOUND_POLICY) {
                        DEBUG_TRACE(" MM CAMCARORDER ERROR\n");
                        cam_app_black_screen_show(ad, 2);
                        ecore_timer_add(0.01, cam_delay_popup, (void *)ad);
-                       return FALSE;
+                       return ECORE_CALLBACK_CANCEL;
                }
 
                cam_critical(LOG_MM, "cam_app_preview_start failed");
                cam_app_notice_popup(ad, "UNABLE TO START PREVIEW", cam_app_timeout_notice_response_cb);
-               return FALSE;
+               return ECORE_CALLBACK_CANCEL;
        }
        CAM_TA_ACUM_ITEM_END("    cam_app_preview_start", 0);
 
@@ -763,7 +767,7 @@ gboolean cam_app_start(void *data)
 #endif
        CAM_TA_ACUM_ITEM_END("#########cam_app_start", 0);
 
-       return TRUE;
+       return ECORE_CALLBACK_CANCEL;
 }
 
 gboolean cam_app_pause(void *data)
@@ -2032,7 +2036,6 @@ gboolean cam_mode_change(void *data, int to_mode)
 
        cam_app_get_preview_offset_coordinate(ad);
 
-       cam_continuous_af_start(ad);
        if (!cam_app_preview_start(ad)) {
                cam_critical(LOG_MM, "cam_app_preview_start failed");
                goto MODE_CHANGE_FAILED;
@@ -2215,7 +2218,6 @@ gboolean cam_recording_mode_change(void *data, int rec_mode)
                return FALSE;
        }
 
-       cam_continuous_af_start(ad);
        if (!cam_app_preview_start(ad)) {
                cam_critical(LOG_MM, "cam_app_preview_start failed");
                cam_app_notice_popup(ad, "PREVIEW START FAILED !!", cam_app_timeout_notice_response_cb);
@@ -2299,8 +2301,6 @@ gboolean cam_shooting_mode_change(void *data)
                }
                cam_mm_get_video_size( &camapp->default_preview_width, &camapp->default_preview_height);
                DEBUG_TRACE("default_width = %d,default_height = %d", camapp->default_preview_width, camapp->default_preview_height);
-
-               cam_continuous_af_start(ad);
        }
 
        g_value_init(&value, G_TYPE_INT);
@@ -3056,50 +3056,6 @@ gboolean cam_camera_key_release(void *data)
        return TRUE;
 }
 
-Eina_Bool cam_continuous_af_start(void *data)
-{
-
-       struct appdata *ad = (struct appdata *)data;
-       cam_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
-
-       CamAppData *camapp = NULL;
-       camapp = ad->camapp_handle;
-       cam_retvm_if(camapp == NULL, ECORE_CALLBACK_CANCEL, "camapp_handle is NULL");
-
-       DEBUG_TRACE("cam_continuous_af_start");
-
-       /* init */
-       ad->af_x = (ad->win_width / 2) - ad->preview_offset_x;
-       ad->af_y = (ad->win_height / 2) - ad->preview_offset_y;
-
-       ad->af_x = (ad->af_x * ad->camfw_video_width) / ad->preview_w;
-       ad->af_y = (ad->af_y * ad->camfw_video_height) / ad->preview_h;
-       /* init */
-       ad->touch_lcd_x = (ad->win_height / 2);
-       ad->touch_lcd_y = (ad->win_width / 2);
-
-       cam_app_draw_af_box(ad);
-       camapp->focus_state = CAM_FOCUS_STATUS_RELEASED;
-       cam_app_focus_guide_update(ad);
-
-       evas_object_show(ad->focus_edje);
-
-       camapp->focus_mode = CAM_FOCUS_MODE_CONTINUOUS;
-
-       /* cam_mm_set_af_area include init focusing */
-       DEBUG_TRACE("start continuous AF");
-       if (cam_mm_set_af_area(ad->af_x, ad->af_y, ad->camera_focus_w, ad->camera_focus_h)) {
-               DEBUG_TRACE("cam_mm_set_af_area success!");
-               /*focus guide update*/
-       } else {
-               DEBUG_TRACE("cam_mm_set_af_area error!");
-       }
-       if (!cam_mm_start_focusing(camapp->focus_mode)) {
-               cam_critical(LOG_MM, "cam_mm_start_focusing error");
-       }
-       return ECORE_CALLBACK_CANCEL;
-}
-
 Eina_Bool cam_volume_key_press(void *data)
 {
        struct appdata *ad = (struct appdata *)data;
@@ -3163,7 +3119,9 @@ static gboolean cam_power_key_press(void *data)
        struct appdata *ad = (struct appdata *)data;
        CamAppData *camapp = NULL;
 
+#ifdef ENABLE_CAM_POWER_CONTROL
        power_lock_state(POWER_STATE_SCREEN_OFF, 0);
+#endif
 
        debug_fenter(LOG_UI);
 
@@ -3188,7 +3146,9 @@ static gboolean cam_power_key_press(void *data)
        return TRUE;
 
  lock_and_exit:
+#ifdef ENABLE_CAM_POWER_CONTROL
        power_unlock_state(POWER_STATE_SCREEN_OFF);
+#endif
 
        return TRUE;
 }
@@ -3542,7 +3502,9 @@ Eina_Bool cam_hard_key_down(void *data, int type, void *event_info)
                if (!camapp->key_lock) {
                        camapp->key_lock = TRUE;
                }
-       } else if (0 == strcmp(kd->keyname, KEY_POWER)) {
+       }
+#ifdef ENABLE_CAM_POWER_CONTROL
+       else if (0 == strcmp(kd->keyname, KEY_POWER)) {
                if (!camapp->key_lock) {
                        camapp->key_lock = TRUE;
                        power_unlock_state(POWER_STATE_NORMAL);
@@ -3551,7 +3513,7 @@ Eina_Bool cam_hard_key_down(void *data, int type, void *event_info)
 
                }
        }
-
+#endif
        return 0;
 }
 
@@ -4044,7 +4006,6 @@ static void __cam_focus_cb(camera_focus_state_e state, void *user_data) {
                                DEBUG_TRACE("start caf");
                                cam_app_focus_guide_create(ad);
                                cam_app_focus_guide_update(ad);
-                               ad->continuous_af_timer= ecore_timer_add(FOCUS_FOCUSED_TIME_OUT, cam_continuous_af_start, ad);
                        }
                }
                break;
@@ -4059,7 +4020,6 @@ static void __cam_focus_cb(camera_focus_state_e state, void *user_data) {
                                DEBUG_TRACE("start caf");
                                cam_app_focus_guide_create(ad);
                                cam_app_focus_guide_update(ad);
-                               ad->continuous_af_timer= ecore_timer_add(FOCUS_FAILED_TIME_OUT, cam_continuous_af_start, ad);
                        }
                }
                break;
@@ -4654,7 +4614,9 @@ gboolean cam_app_run_image_viewer_ug(void *data, char *file_path)
                                DEBUG_TRACE("cam_key_grab_deinit fail");
                        }
                        cam_app_preview_stop();
+#ifdef ENABLE_CAM_POWER_CONTROL
                        power_unlock_state(POWER_STATE_NORMAL);
+#endif
                } else {
                        cam_warning(LOG_UI, "Cannot create imageviewer ug");
                        cam_file_init(NULL);