diff --git a/src/bin/e_randr2.c b/src/bin/e_randr2.c index 643d399a1..44b22387a 100644 --- a/src/bin/e_randr2.c +++ b/src/bin/e_randr2.c @@ -1,6 +1,6 @@ #include "e.h" -#define E_RANDR_CONFIG_VERSION 2 +#define E_RANDR_CONFIG_VERSION 3 ///////////////////////////////////////////////////////////////////////// static Eina_Bool _screen_closed(E_Randr2_Screen *s); @@ -83,6 +83,7 @@ e_randr2_init(void) #define D _e_randr2_cfg_edd E_CONFIG_VAL(D, T, version, INT); E_CONFIG_LIST(D, T, screens, _e_randr2_cfg_screen_edd); + E_CONFIG_VAL(D, T, hotplug_response, DOUBLE); E_CONFIG_VAL(D, T, restore, UCHAR); E_CONFIG_VAL(D, T, ignore_hotplug_events, UCHAR); E_CONFIG_VAL(D, T, ignore_acpi_events, UCHAR); @@ -349,6 +350,9 @@ _config_upgrade(E_Config_Randr2 *cfg) { if (cfg->version < 2) cfg->default_policy = E_RANDR2_POLICY_EXTEND; + if (cfg->version < 3) + cfg->hotplug_response = 1.0; + cfg->version = E_RANDR_CONFIG_VERSION; } static E_Config_Randr2 * @@ -362,6 +366,10 @@ _config_load(void) { if (cfg->version < E_RANDR_CONFIG_VERSION) _config_upgrade(cfg); + if (cfg->hotplug_response < 0.2) + cfg->hotplug_response = 0.2; + else if (cfg->hotplug_response > 9.0) + cfg->hotplug_response = 9.0; printf("RRR: loaded existing config\n"); return cfg; } @@ -374,6 +382,7 @@ _config_load(void) cfg->ignore_hotplug_events = 0; cfg->ignore_acpi_events = 0; cfg->default_policy = E_RANDR2_POLICY_EXTEND; + cfg->hotplug_response = 1.0; printf("RRR: fresh config\n"); return cfg; } @@ -1403,7 +1412,13 @@ e_randr2_screen_refresh_queue(Eina_Bool lid_event) if (_screen_delay_timer) ecore_timer_loop_reset(_screen_delay_timer); else - _screen_delay_timer = ecore_timer_loop_add(1.0, _cb_screen_change_delay, NULL); + { + double t = 1.0; + + if ((e_randr2_cfg) && (e_randr2_cfg->hotplug_response > 0.2)) + t = e_randr2_cfg->hotplug_response; + _screen_delay_timer = ecore_timer_loop_add(t, _cb_screen_change_delay, NULL); + } event_screen |= !!lid_event; } diff --git a/src/bin/e_randr2.h b/src/bin/e_randr2.h index c693e631c..5abccf8e6 100644 --- a/src/bin/e_randr2.h +++ b/src/bin/e_randr2.h @@ -102,6 +102,7 @@ struct _E_Config_Randr2 unsigned char ignore_hotplug_events; unsigned char ignore_acpi_events; E_Randr2_Policy default_policy; + double hotplug_response; }; struct _E_Config_Randr2_Screen diff --git a/src/modules/conf_randr/e_int_config_randr2.c b/src/modules/conf_randr/e_int_config_randr2.c index 85e569c7a..f12b29920 100644 --- a/src/modules/conf_randr/e_int_config_randr2.c +++ b/src/modules/conf_randr/e_int_config_randr2.c @@ -33,6 +33,7 @@ struct _E_Config_Dialog_Data int hotplug; int acpi; int screen; + double hotplug_response; E_Randr2_Policy policy; }; @@ -105,6 +106,7 @@ _create_data(E_Config_Dialog *cfd EINA_UNUSED) cfdata->hotplug = !e_randr2_cfg->ignore_hotplug_events; cfdata->acpi = !e_randr2_cfg->ignore_acpi_events; cfdata->policy = e_randr2_cfg->default_policy; + cfdata->hotplug_response = e_randr2_cfg->hotplug_response; return cfdata; } @@ -128,6 +130,14 @@ _free_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata) E_FREE(cfdata); } +static void +_cb_hotplug_response_changed(void *data EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUSED) +{ + E_Config_Dialog_Data *cfdata = data; + cfdata->hotplug_response = elm_slider_value_get(obj); + e_config_dialog_changed_set(cfdata->cfd, EINA_TRUE); +} + static void _cb_restore_changed(void *data EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUSED) { @@ -1104,6 +1114,18 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas EINA_UNUSED, E_Config_Dialog_Data evas_object_show(o); bx2 = o; + o = elm_slider_add(win); + evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_object_text_set(o, _("Response")); + elm_slider_unit_format_set(o, "%1.1f sec"); + elm_slider_span_size_set(o, 88); + elm_slider_min_max_set(o, 0.2, 9.0); + elm_slider_value_set(o, cfdata->hotplug_response); + elm_box_pack_end(bx2, o); + evas_object_show(o); + evas_object_smart_callback_add(o, "changed", _cb_hotplug_response_changed, cfdata); + o = elm_check_add(win); evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); @@ -1160,6 +1182,7 @@ _basic_apply(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata) e_randr2_cfg->ignore_hotplug_events = !cfdata->hotplug; e_randr2_cfg->ignore_acpi_events = !cfdata->acpi; e_randr2_cfg->default_policy = cfdata->policy; + e_randr2_cfg->hotplug_response = cfdata->hotplug_response; printf("APPLY....................\n"); EINA_LIST_FOREACH(cfdata->screens, l, cs2)