Take the special methord to improveove the speed of Brightness Setting and fix N_SE...
authorKairong Yin <kairong78.yin@samsung.com>
Tue, 23 Oct 2012 02:10:43 +0000 (10:10 +0800)
committerKairong Yin <kairong78.yin@samsung.com>
Tue, 23 Oct 2012 02:10:43 +0000 (10:10 +0800)
Change-Id: I8e093a2b3d66eeed63616afe57260403608c55e1

setting-display/include/setting-display.h
setting-display/src/setting-display-brightness.c

index fbf1469..6438ab6 100755 (executable)
@@ -117,6 +117,8 @@ struct _SettingDisplayUG {
        ui_gadget_h ug_gallery;
        ui_gadget_h ug_imageviewer;
        Eina_Bool wallpaper_changed;
+       //Improve response speed
+       Ecore_Idler *set_idler;
 };
 
 extern setting_view setting_view_display_main;
index c0469a1..c92dc7e 100755 (executable)
@@ -245,6 +245,10 @@ static int setting_display_brightness_destroy(void *cb)
        vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, setting_display_brightness_lowbat_cb);
 
        SettingDisplayUG *ad = (SettingDisplayUG *) cb;
+       if (ad->set_idler) {
+               ecore_idler_del(ad->set_idler);
+               ad->set_idler = NULL;
+       }
        elm_naviframe_item_pop(ad->navi_bar);
        if (ad->popup)
        {
@@ -437,6 +441,27 @@ static void setting_display_set_slider_value(void* data, Evas_Object *obj, doubl
        }
 }
 
+static Eina_Bool __set_brightness_on_idle(void *data)
+{
+       SETTING_TRACE_BEGIN;
+       SettingDisplayUG *ad = (SettingDisplayUG *) data;
+       if (!ad || !ad->data_br_sli || !ad->data_br_sli->eo_check)
+       {
+               SETTING_TRACE_ERROR("!ad || !ad->data_br_sli || !ad->data_br_sli->eo_check");
+               ad->set_idler = NULL;
+               return FALSE;
+       }
+       //Get the current real value of slider
+       Evas_Object *obj = ad->data_br_sli->eo_check;
+       double val = elm_slider_value_get(obj);
+       int value = (int)(val + 0.5);
+       SETTING_TRACE("val:%f", val);
+       SETTING_TRACE("value:%d", value);
+       setting_display_set_slider_value(ad, obj, value);
+       //After return False, the idler will be deleted directly,so here set ad->set_idler as NULL directly.
+       ad->set_idler = NULL;
+       return FALSE;
+}
 
 static void
 setting_display_birghtness_bright_slider_value_change_cb(void *data,
@@ -465,7 +490,21 @@ setting_display_birghtness_bright_slider_value_change_cb(void *data,
        SETTING_TRACE("value:%d", value);
        if (value != old_val)
        {
-               setting_display_set_slider_value(ad, obj, value);
+               //setting_display_set_slider_value(ad, obj, value);
+               if(isEmulBin())
+               {
+                       SETTING_TRACE("It is in Emulator, need special process to improve the performence");
+                       if (ad->set_idler) {
+                               ecore_idler_del(ad->set_idler);
+                               ad->set_idler = NULL;
+                       }
+                       ad->set_idler = ecore_idler_add((Ecore_Task_Cb) __set_brightness_on_idle, ad);
+               }
+               else
+               {
+                       SETTING_TRACE("It is in Real Target, Set the brightness directly.");
+                       setting_display_set_slider_value(ad, obj, value);
+               }
                old_val = value;
        }
 }