[Bug] Modify the logic when destroying ug-image-viewer in setting > wallpaper.
authorJing Yigang <yigang.jing@samsung.com>
Fri, 14 Sep 2012 05:40:30 +0000 (13:40 +0800)
committerJing Yigang <yigang.jing@samsung.com>
Fri, 14 Sep 2012 05:40:30 +0000 (13:40 +0800)
Change-Id: I1407edb0dd13d1f27f9aafed90f7c14f676f8f4a

setting-display/src/setting-display-wallpaper.c

index 8bcd99f..010ec90 100755 (executable)
@@ -145,47 +145,6 @@ static void __setting_display_wallpaper_imageviewer_ug_result_cb(ui_gadget_h ug,
 
                ad->wallpaper_changed = EINA_TRUE;
        }
-
-       if (ug) {
-               ug_destroy(ug);
-               ad->ug_imageviewer = NULL;
-       }
-
-       if (ad->ug_gallery) {
-               ug_destroy(ad->ug_gallery);
-               ad->ug_gallery = NULL;
-       }
-
-       if (ad->wallpaper_changed == EINA_FALSE) {
-               SETTING_TRACE("wallpaper not changed");
-               return;
-       }
-
-       char text[MAX_DISPLAY_NAME_LEN_ON_UI +1] = {0, };
-       SETTING_TRACE("cur_sel = %d", ad->cur_sel);
-       switch(ad->cur_sel) {
-       case WALLPAPER_CUR_SEL_HOME_SCREEN:
-               snprintf(text, MAX_DISPLAY_NAME_LEN_ON_UI, "%s", SETTING_WALLPAPER_HOME_SCREEN_CHANGED);
-               break;
-       case WALLPAPER_CUR_SEL_LOCK_SCREEN:
-               snprintf(text, MAX_DISPLAY_NAME_LEN_ON_UI, "%s", SETTING_WALLPAPER_LOCK_SCREEN_CHANGED);
-               break;
-       case WALLPAPER_CUR_SEL_HOME_AND_LOCK_SCREEN:
-               snprintf(text, MAX_DISPLAY_NAME_LEN_ON_UI, "%s", SETTING_WALLPAPER_HOME_AND_LOCK_SCREEN_CHANGED);
-               break;
-       default:
-               ad->cur_sel = WALLPAPER_CUR_SEL_NONE;
-               return;
-       }
-
-       setting_create_sel_info_popup(ad->view_layout,
-                                     &(ad->selInfoPop_layout),
-                                     &(ad->selInfoPop));
-       elm_notify_timeout_set(ad->selInfoPop, SETTING_WALLPAPER_POPUP_TIMER);
-
-       edje_object_part_text_set(_EDJ(ad->selInfoPop_layout), "elm.text", text);
-       ad->cur_sel = WALLPAPER_CUR_SEL_NONE;
-       ad->wallpaper_changed = EINA_FALSE;
 }
 
 static void __setting_display_wallpaper_imageviewer_ug_destroy_cb(ui_gadget_h ug, void *priv)
@@ -198,6 +157,42 @@ static void __setting_display_wallpaper_imageviewer_ug_destroy_cb(ui_gadget_h ug
                ug_destroy(ug);
                ad->ug_imageviewer = NULL;
        }
+
+       if (ad->wallpaper_changed) {
+               if (ad->ug_gallery) {
+                       ug_destroy(ad->ug_gallery);
+                       ad->ug_gallery = NULL;
+               }
+
+               char text[MAX_DISPLAY_NAME_LEN_ON_UI +1] = {0, };
+               SETTING_TRACE("cur_sel = %d", ad->cur_sel);
+
+               switch(ad->cur_sel) {
+               case WALLPAPER_CUR_SEL_HOME_SCREEN:
+                       snprintf(text, MAX_DISPLAY_NAME_LEN_ON_UI, "%s", SETTING_WALLPAPER_HOME_SCREEN_CHANGED);
+                       break;
+               case WALLPAPER_CUR_SEL_LOCK_SCREEN:
+                       snprintf(text, MAX_DISPLAY_NAME_LEN_ON_UI, "%s", SETTING_WALLPAPER_LOCK_SCREEN_CHANGED);
+                       break;
+               case WALLPAPER_CUR_SEL_HOME_AND_LOCK_SCREEN:
+                       snprintf(text, MAX_DISPLAY_NAME_LEN_ON_UI, "%s", SETTING_WALLPAPER_HOME_AND_LOCK_SCREEN_CHANGED);
+                       break;
+               default:
+                       ad->cur_sel = WALLPAPER_CUR_SEL_NONE;
+                       return;
+               }
+
+               setting_create_sel_info_popup(ad->view_layout,
+                                             &(ad->selInfoPop_layout),
+                                             &(ad->selInfoPop));
+               elm_notify_timeout_set(ad->selInfoPop, SETTING_WALLPAPER_POPUP_TIMER);
+
+               edje_object_part_text_set(_EDJ(ad->selInfoPop_layout), "elm.text", text);
+               ad->cur_sel = WALLPAPER_CUR_SEL_NONE;
+               ad->wallpaper_changed = EINA_FALSE;
+       } else {
+               SETTING_TRACE("wallpaper not changed");
+       }
 }
 
 static void __setting_display_wallpaper_gallery_ug_result_cb(ui_gadget_h ug, service_h result, void *priv)
@@ -418,6 +413,7 @@ static int setting_display_wallpaper_create(void *cb)
                return SETTING_RETURN_FAIL;
        }
 
+       ad->wallpaper_changed = EINA_FALSE;
        setting_view_display_wallpaper.is_create = 1;
 #if DISABLED_CODE
        __setting_display_wallpaper_listen_vconf_change(ad);