From 20b8983375f284f5f2b0fa1a2615c5adbb667c95 Mon Sep 17 00:00:00 2001 From: "h2.seo" Date: Wed, 12 Sep 2012 13:23:44 +0900 Subject: [PATCH] Fix camera start bs issue --- edc/cam_guideline_edje.edc | 28 +++++++---- include/cam.h | 2 - include/cam_app.h | 3 +- packaging/org.tizen.camera-app.spec | 2 +- src/cam.c | 36 ++------------- src/cam_app.c | 72 ++++++----------------------- src/cam_menu_composer.c | 4 +- src/cam_rec.c | 1 - src/edc-callback/cam_toolbar_edc_callback.c | 43 +++++++++++++---- 9 files changed, 75 insertions(+), 116 deletions(-) diff --git a/edc/cam_guideline_edje.edc b/edc/cam_guideline_edje.edc index fcb6cbc..aaa29b8 100644 --- a/edc/cam_guideline_edje.edc +++ b/edc/cam_guideline_edje.edc @@ -50,6 +50,7 @@ group { name: "guide_line1_outline1_1"; type: IMAGE; mouse_events: 0; + scale: 1; description { state: "default" 0.0; rel1 { relative: (GUIDE_LINE_W1 - 1)/MAIN_W 0.0; } @@ -65,6 +66,7 @@ group { name: "guide_line1"; type: IMAGE; mouse_events: 0; + scale: 1; description { state: "default" 0.0; rel1 { relative: GUIDE_LINE_W1/MAIN_W 0.0; } @@ -76,8 +78,8 @@ group { } description { state: "ver_default" 0.0; - rel1 { relative: VER_GUIDE_LINE_W1/VER_MAIN_W 0.1; } - rel2 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP)/VER_MAIN_W 0.9; } + rel1 { relative: VER_GUIDE_LINE_W1/VER_MAIN_W 0.125; } + rel2 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP)/VER_MAIN_W 0.875; } image{ normal: GUDIE_LINE_1_IMAGE ; } @@ -99,6 +101,7 @@ group { name: "guide_line1_outline1_2"; type: IMAGE; mouse_events: 0; + scale: 1; description { state: "default" 0.0; rel1 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP)/MAIN_W 0.0; } @@ -115,6 +118,7 @@ group { name: "guide_line2_outline2_1"; type: IMAGE; mouse_events: 0; + scale: 1; description { state: "default" 0.0; rel1 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + GUIDE_LINE_W2 - 1)/MAIN_W 0.0; } @@ -130,6 +134,7 @@ group { name: "guide_line2"; type: IMAGE; mouse_events: 0; + scale: 1; description { state: "default" 0.0; rel1 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + GUIDE_LINE_W2)/MAIN_W 0.0; } @@ -141,8 +146,8 @@ group { } description { state: "ver_default" 0.0; - rel1 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_W2)/VER_MAIN_W 0.1; } - rel2 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_W2 + GUIDE_LINE_GAP)/VER_MAIN_W 0.9; } + rel1 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_W2)/VER_MAIN_W 0.125; } + rel2 { relative: (VER_GUIDE_LINE_W1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_W2 + GUIDE_LINE_GAP)/VER_MAIN_W 0.875; } image{ normal: GUDIE_LINE_1_IMAGE ; } @@ -164,6 +169,7 @@ group { name: "guide_line2_outline2_2"; type: IMAGE; mouse_events: 0; + scale: 1; description { state: "default" 0.0; rel1 { relative: (GUIDE_LINE_W1 + GUIDE_LINE_GAP + GUIDE_LINE_W2 + GUIDE_LINE_GAP)/MAIN_W 0.0; } @@ -179,6 +185,7 @@ group { name: "guide_line3_outline3_1"; type: IMAGE; mouse_events: 0; + scale: 1; description { state: "default" 0.0; rel1 { relative: (GUIDE_LINE_H1 - 1)/MAIN_W 0.0; } @@ -194,10 +201,11 @@ group { name: "guide_line3"; type: IMAGE; mouse_events: 0; + scale: 1; description { state: "default" 0.0; - rel1 { relative: 0.1 GUIDE_LINE_H1/MAIN_H; } - rel2 { relative: 0.9 (GUIDE_LINE_H1 + GUIDE_LINE_GAP)/MAIN_H; } + rel1 { relative: 0.125 GUIDE_LINE_H1/MAIN_H; } + rel2 { relative: 0.875 (GUIDE_LINE_H1 + GUIDE_LINE_GAP)/MAIN_H; } image{ normal: GUDIE_LINE_2_IMAGE ; } @@ -227,6 +235,7 @@ group { name: "guide_line3_outline3_2"; type: IMAGE; mouse_events: 0; + scale: 1; description { state: "default" 0.0; rel1 { relative: (GUIDE_LINE_H1 + GUIDE_LINE_GAP)/MAIN_W 0.0; } @@ -243,6 +252,7 @@ group { name: "guide_line4_outline4_1"; type: IMAGE; mouse_events: 0; + scale: 1; description { state: "default" 0.0; rel1 { relative: (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2 - 1)/MAIN_W 0.0; } @@ -258,10 +268,11 @@ group { name: "guide_line4"; type: IMAGE; mouse_events: 0; + scale: 1; description { state: "default" 0.0; - rel1 { relative: 0.1 (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2)/MAIN_H; } - rel2 { relative: 0.9 (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2 + GUIDE_LINE_GAP)/MAIN_H; } + rel1 { relative: 0.125 (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2)/MAIN_H; } + rel2 { relative: 0.875 (GUIDE_LINE_H1 + GUIDE_LINE_GAP + GUIDE_LINE_H2 + GUIDE_LINE_GAP)/MAIN_H; } image{ normal: GUDIE_LINE_2_IMAGE ; } @@ -291,6 +302,7 @@ group { name: "guide_line4_outline4_2"; type: IMAGE; mouse_events: 0; + scale: 1; description { state: "default" 0.0; rel1 { relative: (VER_GUIDE_LINE_H1 + GUIDE_LINE_GAP + VER_GUIDE_LINE_H2 + GUIDE_LINE_GAP)/MAIN_W 0.0; } diff --git a/include/cam.h b/include/cam.h index 08f79af..da6c90d 100755 --- a/include/cam.h +++ b/include/cam.h @@ -346,8 +346,6 @@ struct appdata { GQueue *file_reg_queue; #endif - pthread_t camera_start_thread; - ui_gadget_h imageviewer_ug; gboolean ug_is_deleting_process; /*note: now ug is deleting process, and run into camera preview process*/ service_h imageviewer_service; diff --git a/include/cam_app.h b/include/cam_app.h index 711c7a5..0a6fa42 100755 --- a/include/cam_app.h +++ b/include/cam_app.h @@ -242,7 +242,7 @@ int cam_appdata_init(void *data); int cam_appdata_fini(void *data); CamAppData *cam_handle_get(void); -gboolean cam_app_start(void *data); +Eina_Bool cam_app_start(void *data); Eina_Bool cam_app_stop(void *data); gboolean cam_app_resume(void *data); gboolean cam_app_pause(void *data); @@ -420,7 +420,6 @@ void cam_app_update_quickview_icon(void *data); void cam_utils_remove_idler_all(void *data); gdouble _get_current_time(void); void cam_remove_tmp_file(); -Eina_Bool cam_continuous_af_start(void *data); Eina_Bool cam_elm_cache_flush(); void cam_app_mdm_syspopup(void *data); diff --git a/packaging/org.tizen.camera-app.spec b/packaging/org.tizen.camera-app.spec index 66bc921..3363e35 100644 --- a/packaging/org.tizen.camera-app.spec +++ b/packaging/org.tizen.camera-app.spec @@ -4,7 +4,7 @@ Name: org.tizen.camera-app Summary: camera application -Version: 0.3.34 +Version: 0.3.35 Release: 1 Group: misc License: Flora diff --git a/src/cam.c b/src/cam.c index 744987a..cd18b20 100755 --- a/src/cam.c +++ b/src/cam.c @@ -322,19 +322,6 @@ static void cam_resume(void *data) } -void *cam_start_thread_run(void *data) -{ - struct appdata *ad = (struct appdata *)data; - cam_retv_if(ad == NULL, NULL); - - if (cam_app_start(ad) == FALSE) - cam_critical(LOG_CAM, "cam_app_start failed"); - - pthread_exit(NULL); - - return NULL; -} - static void cam_service(service_h service, void *user_data) { CAM_TA_ACUM_ITEM_BEGIN("==cam_service==", 0); @@ -434,21 +421,11 @@ static void cam_service(service_h service, void *user_data) if (ad->launch_type == CAM_LAUNCH_FIRST) { debug_fenter(LOG_CAM); - if (!cam_condition_check_to_start_camera(ad)) { - cam_critical(LOG_CAM, "cannot start camera"); - return; - } - if (!open_cam_handle((void*)ad)) { cam_critical(LOG_CAM, "open_cam_handle failed"); return; } - if (pthread_create(&(ad->camera_start_thread), NULL, cam_start_thread_run, (void *)ad) < 0) { - cam_critical(LOG_CAM, "Create camera start thread failed"); - return; - } - #ifdef ENABLE_CAM_POWER_CONTROL power_lock_state(POWER_STATE_NORMAL, 0); #endif @@ -468,6 +445,8 @@ static void cam_service(service_h service, void *user_data) return; } CAM_TA_ACUM_ITEM_END(" cam_layout_init", 0); + + ecore_idler_add(cam_app_start, ad); } else { /* RELUNCHING!! //in paused -> Camera process is called by External process */ @@ -489,16 +468,6 @@ static void cam_service(service_h service, void *user_data) if (ad->exe_args == NULL) return; - if (!cam_condition_check_to_start_camera(ad)) { - cam_critical(LOG_CAM, "cannot start camera"); - return; - } - - if (pthread_create(&(ad->camera_start_thread), NULL, cam_start_thread_run, (void *)ad) < 0) { - cam_critical(LOG_CAM, "Create camera start thread failed"); - return; - } - ResetCaps(); CAM_TA_ACUM_ITEM_BEGIN(" cam_layout_init", 0); @@ -509,6 +478,7 @@ static void cam_service(service_h service, void *user_data) CAM_TA_ACUM_ITEM_END(" cam_layout_init", 0); evas_object_raise(ad->win_main); + ecore_idler_add(cam_app_start, ad); } cam_debug(LOG_UI, "############## cam_service END##############"); diff --git a/src/cam_app.c b/src/cam_app.c index ddd9620..276afe9 100755 --- a/src/cam_app.c +++ b/src/cam_app.c @@ -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; @@ -4050,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; @@ -4065,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; diff --git a/src/cam_menu_composer.c b/src/cam_menu_composer.c index 5e49608..c3e3bbf 100755 --- a/src/cam_menu_composer.c +++ b/src/cam_menu_composer.c @@ -48,10 +48,10 @@ void cam_compose_setting_menu(cam_menu_composer* composer) unsigned int capacity = 0; GetCamDevFuncCaps(&capacity, NULL); - +#if 0 if(capacity & CAM_CP_FUNC_EDIR_SHORTCUT) eina_array_push(composer->array, (void*)&setting[0]); - +#endif if(capacity & CAM_CP_FUNC_TIMER) eina_array_push(composer->array, (void*)&setting[1]); diff --git a/src/cam_rec.c b/src/cam_rec.c index 225ba5d..856b71b 100755 --- a/src/cam_rec.c +++ b/src/cam_rec.c @@ -89,7 +89,6 @@ static gchar *__get_tmpfile_name() if (g_file_test(tmpfile_name, G_FILE_TEST_EXISTS)) { DEBUG_TRACE("Error : tmp file exist on the %s", file_path); cam_remove_tmp_file(); - return NULL; } return g_strdup(tmpfile_name); diff --git a/src/edc-callback/cam_toolbar_edc_callback.c b/src/edc-callback/cam_toolbar_edc_callback.c index 5f93afe..ccef60c 100755 --- a/src/edc-callback/cam_toolbar_edc_callback.c +++ b/src/edc-callback/cam_toolbar_edc_callback.c @@ -1288,7 +1288,6 @@ void cam_toolbar_update(struct appdata *ad) } else { if (ad->is_recording) { edje_object_signal_emit(_EDJ(ad->toolbar_edje), "toolbar_bg,hide", "program"); - __toolbar_recording_capture_button_create(ad); __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_INVISIBLE); __toolbar_mode_item_hide(ad); __toolbar_shutter_button_hide(ad); @@ -1300,7 +1299,6 @@ void cam_toolbar_update(struct appdata *ad) } } else { edje_object_signal_emit(_EDJ(ad->toolbar_edje), "toolbar_bg,show", "program"); - __toolbar_recording_capture_button_destroy(ad); __toolbar_menu_item_update(ad, TOOLBAR_ITEM_STATE_NORMAL); __toolbar_mode_item_update(ad); __toolbar_shutter_button_update(ad); @@ -1602,17 +1600,46 @@ int cam_guideline_rotate(struct appdata *ad) if (wide_mode) { DEBUG_TRACE("hor,wide_mode"); - edje_object_signal_emit(_EDJ(ad->guideline_edje), - "guide_line,1,2,normal", "prog_guideline"); - edje_object_signal_emit(_EDJ(ad->guideline_edje), + switch (ad->target_direction) { + case CAM_TARGET_DIRECTION_LANDSCAPE: + case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE: + DEBUG_TRACE("landscape"); + edje_object_signal_emit(_EDJ(ad->guideline_edje), + "guide_line,1,2,normal", "prog_guideline"); + edje_object_signal_emit(_EDJ(ad->guideline_edje), "guide_line,3,4,wide", "prog_guideline"); + break; + case CAM_TARGET_DIRECTION_PORTRAIT: + case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE: + DEBUG_TRACE("portrait"); + edje_object_signal_emit(_EDJ(ad->guideline_edje), + "guide_line,1,2,vertical,wide", "prog_guideline"); + edje_object_signal_emit(_EDJ(ad->guideline_edje), + "guide_line,3,4,vertical,normal", "prog_guideline"); + break; + } } else { DEBUG_TRACE("hor,normal mode"); - edje_object_signal_emit(_EDJ(ad->guideline_edje), - "guide_line,1,2,normal", "prog_guideline"); - edje_object_signal_emit(_EDJ(ad->guideline_edje), + switch (ad->target_direction) { + case CAM_TARGET_DIRECTION_LANDSCAPE: + case CAM_TARGET_DIRECTION_LANDSCAPE_INVERSE: + DEBUG_TRACE("landscape"); + edje_object_signal_emit(_EDJ(ad->guideline_edje), + "guide_line,1,2,normal", "prog_guideline"); + edje_object_signal_emit(_EDJ(ad->guideline_edje), "guide_line,3,4,normal", "prog_guideline"); + break; + case CAM_TARGET_DIRECTION_PORTRAIT: + case CAM_TARGET_DIRECTION_PORTRAIT_INVERSE: + DEBUG_TRACE("portrait"); + edje_object_signal_emit(_EDJ(ad->guideline_edje), + "guide_line,1,2,vertical,normal", "prog_guideline"); + edje_object_signal_emit(_EDJ(ad->guideline_edje), + "guide_line,3,4,vertical,normal", "prog_guideline"); + break; + } + } /*evas_object_lower(ad->guideline_edje);*/ -- 2.7.4