forked from enlightenment/enlightenment
add options to randr2 to ignore acpi and hotplug randr events.
This commit is contained in:
parent
a73d2583c5
commit
da4d1ecfe8
|
@ -97,6 +97,8 @@ e_randr2_init(void)
|
|||
E_CONFIG_VAL(D, T, version, INT);
|
||||
E_CONFIG_LIST(D, T, screens, _e_randr2_cfg_screen_edd);
|
||||
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);
|
||||
|
||||
if (!E_EVENT_RANDR_CHANGE) E_EVENT_RANDR_CHANGE = ecore_event_type_new();
|
||||
// delay setting up acpi handler, as acpi is init'ed after randr
|
||||
|
@ -336,6 +338,8 @@ _config_load(void)
|
|||
cfg->version = E_RANDR_CONFIG_VERSION;
|
||||
cfg->screens = NULL;
|
||||
cfg->restore = 1;
|
||||
cfg->ignore_hotplug_events = 0;
|
||||
cfg->ignore_acpi_events = 0;
|
||||
printf("RRR: fresh config\n");
|
||||
return cfg;
|
||||
}
|
||||
|
@ -620,8 +624,11 @@ _cb_acpi(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
|
|||
if (lid_closed == _lid_is_closed) return EINA_TRUE;
|
||||
printf("RRR: lid event for lid %i\n", lid_closed);
|
||||
_lid_is_closed = lid_closed;
|
||||
event_screen = EINA_TRUE;
|
||||
_screen_change_delay();
|
||||
if (!e_randr2_cfg->ignore_acpi_events)
|
||||
{
|
||||
event_screen = EINA_TRUE;
|
||||
_screen_change_delay();
|
||||
}
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
|
@ -1412,11 +1419,14 @@ _cb_screen_change(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
|
|||
{
|
||||
Ecore_X_Event_Screen_Change *ev = event;
|
||||
printf("RRR: CB screen change...\n");
|
||||
event_screen = EINA_TRUE;
|
||||
ecore_x_randr_config_timestamp_get(ev->root);
|
||||
ecore_x_randr_screen_current_size_get(ev->root, NULL, NULL, NULL, NULL);
|
||||
ecore_x_sync();
|
||||
_screen_change_delay();
|
||||
if (!e_randr2_cfg->ignore_hotplug_events)
|
||||
{
|
||||
event_screen = EINA_TRUE;
|
||||
_screen_change_delay();
|
||||
}
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
|
@ -1428,7 +1438,10 @@ _cb_crtc_change(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
|
|||
ecore_x_randr_config_timestamp_get(ev->win);
|
||||
ecore_x_randr_screen_current_size_get(ev->win, NULL, NULL, NULL, NULL);
|
||||
ecore_x_sync();
|
||||
_screen_change_delay();
|
||||
if (!e_randr2_cfg->ignore_hotplug_events)
|
||||
{
|
||||
_screen_change_delay();
|
||||
}
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
|
@ -1437,11 +1450,14 @@ _cb_output_change(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
|
|||
{
|
||||
Ecore_X_Event_Randr_Output_Change *ev = event;
|
||||
printf("RRR: CB output change...\n");
|
||||
event_screen = EINA_TRUE;
|
||||
ecore_x_randr_config_timestamp_get(ev->win);
|
||||
ecore_x_randr_screen_current_size_get(ev->win, NULL, NULL, NULL, NULL);
|
||||
ecore_x_sync();
|
||||
_screen_change_delay();
|
||||
if (!e_randr2_cfg->ignore_hotplug_events)
|
||||
{
|
||||
event_screen = EINA_TRUE;
|
||||
_screen_change_delay();
|
||||
}
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -91,6 +91,8 @@ struct _E_Config_Randr2
|
|||
int version;
|
||||
Eina_List *screens;
|
||||
unsigned char restore;
|
||||
unsigned char ignore_hotplug_events;
|
||||
unsigned char ignore_acpi_events;
|
||||
};
|
||||
|
||||
struct _E_Config_Randr2_Screen
|
||||
|
|
|
@ -23,6 +23,8 @@ struct _E_Config_Dialog_Data
|
|||
Evas_Object *rel_to_obj;
|
||||
Evas_Object *rel_align_obj;
|
||||
int restore;
|
||||
int hotplug;
|
||||
int acpi;
|
||||
int screen;
|
||||
};
|
||||
|
||||
|
@ -79,6 +81,8 @@ _create_data(E_Config_Dialog *cfd EINA_UNUSED)
|
|||
|
||||
if (!(cfdata = E_NEW(E_Config_Dialog_Data, 1))) return NULL;
|
||||
cfdata->restore = e_randr2_cfg->restore;
|
||||
cfdata->hotplug = !e_randr2_cfg->ignore_hotplug_events;
|
||||
cfdata->acpi = !e_randr2_cfg->ignore_acpi_events;
|
||||
return cfdata;
|
||||
}
|
||||
|
||||
|
@ -108,6 +112,22 @@ _cb_restore_changed(void *data EINA_UNUSED, Evas_Object *obj, void *event EINA_U
|
|||
e_config_dialog_changed_set(cfdata->cfd, EINA_TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_hotplug_changed(void *data EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUSED)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata = data;
|
||||
cfdata->hotplug = elm_check_state_get(obj);
|
||||
e_config_dialog_changed_set(cfdata->cfd, EINA_TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_acpi_changed(void *data EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUSED)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata = data;
|
||||
cfdata->acpi = elm_check_state_get(obj);
|
||||
e_config_dialog_changed_set(cfdata->cfd, EINA_TRUE);
|
||||
}
|
||||
|
||||
static E_Config_Randr2_Screen *
|
||||
_config_screen_find(E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
|
@ -493,7 +513,7 @@ static Evas_Object *
|
|||
_basic_create(E_Config_Dialog *cfd, Evas *evas EINA_UNUSED, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Evas_Object *win = cfd->dia->win;
|
||||
Evas_Object *o, *bx, *tb;
|
||||
Evas_Object *o, *bx, *tb, *bx2;
|
||||
Eina_List *l;
|
||||
E_Randr2_Screen *s, *first = NULL;
|
||||
E_Config_Randr2_Screen *first_cfg = NULL;
|
||||
|
@ -687,15 +707,41 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas EINA_UNUSED, E_Config_Dialog_Data
|
|||
|
||||
_basic_screen_info_fill(cfdata, first_cfg, first);
|
||||
|
||||
o = elm_box_add(win);
|
||||
elm_box_horizontal_set(o, EINA_TRUE);
|
||||
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0);
|
||||
evas_object_size_hint_align_set(o, 0.0, EVAS_HINT_FILL);
|
||||
elm_box_pack_end(bx, o);
|
||||
evas_object_show(o);
|
||||
bx2 = o;
|
||||
|
||||
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);
|
||||
elm_object_text_set(o, "Restore setup on start");
|
||||
elm_check_state_set(o, e_randr2_cfg->restore);
|
||||
elm_box_pack_end(bx, o);
|
||||
elm_check_state_set(o, cfdata->restore);
|
||||
elm_box_pack_end(bx2, o);
|
||||
evas_object_show(o);
|
||||
evas_object_smart_callback_add(o, "changed", _cb_restore_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);
|
||||
elm_object_text_set(o, "Monitor hotplug");
|
||||
elm_check_state_set(o, cfdata->hotplug);
|
||||
elm_box_pack_end(bx2, o);
|
||||
evas_object_show(o);
|
||||
evas_object_smart_callback_add(o, "changed", _cb_hotplug_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);
|
||||
elm_object_text_set(o, "Lid Events");
|
||||
elm_check_state_set(o, cfdata->acpi);
|
||||
elm_box_pack_end(bx2, o);
|
||||
evas_object_show(o);
|
||||
evas_object_smart_callback_add(o, "changed", _cb_acpi_changed, cfdata);
|
||||
|
||||
evas_smart_objects_calculate(evas_object_evas_get(win));
|
||||
|
||||
e_util_win_auto_resize_fill(win);
|
||||
|
@ -711,6 +757,9 @@ _basic_apply(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
|
|||
E_Config_Randr2_Screen *cs, *cs2;
|
||||
|
||||
e_randr2_cfg->restore = cfdata->restore;
|
||||
e_randr2_cfg->ignore_hotplug_events = !cfdata->hotplug;
|
||||
e_randr2_cfg->ignore_acpi_events = !cfdata->acpi;
|
||||
|
||||
printf("APPLY....................\n");
|
||||
EINA_LIST_FOREACH(cfdata->screens, l, cs2)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue