From e1f5fad009b1184671e69464361267e21cdaad13 Mon Sep 17 00:00:00 2001 From: Kairong Yin Date: Tue, 23 Oct 2012 10:10:43 +0800 Subject: [PATCH] Take the special methord to improveove the speed of Brightness Setting and fix N_SE-11825 Change-Id: I8e093a2b3d66eeed63616afe57260403608c55e1 --- setting-display/include/setting-display.h | 2 ++ setting-display/src/setting-display-brightness.c | 41 +++++++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/setting-display/include/setting-display.h b/setting-display/include/setting-display.h index fbf1469..6438ab6 100755 --- a/setting-display/include/setting-display.h +++ b/setting-display/include/setting-display.h @@ -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; diff --git a/setting-display/src/setting-display-brightness.c b/setting-display/src/setting-display-brightness.c index c0469a1..c92dc7e 100755 --- a/setting-display/src/setting-display-brightness.c +++ b/setting-display/src/setting-display-brightness.c @@ -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; } } -- 2.7.4