raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=ddc9ff72807cfc5274d80f72293b7307850704a2

commit ddc9ff72807cfc5274d80f72293b7307850704a2
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Sat Jun 20 01:50:03 2020 +0100

    randr - add response timeout config value
---
 src/bin/e_randr2.c                           | 19 +++++++++++++++++--
 src/bin/e_randr2.h                           |  1 +
 src/modules/conf_randr/e_int_config_randr2.c | 23 +++++++++++++++++++++++
 3 files changed, 41 insertions(+), 2 deletions(-)

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)

-- 


Reply via email to