diff --git a/src/modules/comp/e_mod_comp.c b/src/modules/comp/e_mod_comp.c index 19662ce63..26e826344 100644 --- a/src/modules/comp/e_mod_comp.c +++ b/src/modules/comp/e_mod_comp.c @@ -375,9 +375,8 @@ _e_mod_comp_win_ready_timeout_setup(E_Comp_Win *cw) } else { - // FIXME 0.2 -> make config val cw->ready_timeout = ecore_timer_add - (0.2, _e_mod_comp_cb_win_show_ready_timeout, cw); + (_comp_mod->conf->first_draw_delay, _e_mod_comp_cb_win_show_ready_timeout, cw); } } diff --git a/src/modules/comp/e_mod_config.c b/src/modules/comp/e_mod_config.c index b379259be..fd9b6510c 100644 --- a/src/modules/comp/e_mod_config.c +++ b/src/modules/comp/e_mod_config.c @@ -64,6 +64,7 @@ struct _E_Config_Dialog_Data int fps_show; int fps_corner; int fps_average_range; + double first_draw_delay; }; @@ -147,7 +148,8 @@ _create_data(E_Config_Dialog *cfd) cfdata->fps_average_range = _comp_mod->conf->fps_average_range; if (cfdata->fps_average_range < 1) cfdata->fps_average_range = 12; else if (cfdata->fps_average_range > 120) cfdata->fps_average_range = 120; - + cfdata->first_draw_delay = _comp_mod->conf->first_draw_delay; + EINA_LIST_FOREACH(_comp_mod->conf->match.popups, l, m) { m2 = E_NEW(Match_Config, 1); @@ -1148,6 +1150,10 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf e_widget_list_object_append(ol, ob, 1, 1, 0.5); ob = e_widget_check_add(evas, _("Grab Server during draw"), &(cfdata->grab)); e_widget_list_object_append(ol, ob, 1, 1, 0.5); + ob = e_widget_label_add(evas, _("Initial draw timeout")); + e_widget_list_object_append(ol, ob, 1, 1, 0.5); + ob = e_widget_slider_add(evas, 1, 0, _("%1.2f Seconds"), 0.01, 0.5, 0.01, 0, &(cfdata->first_draw_delay), NULL, 150); + e_widget_list_object_append(ol, ob, 1, 1, 0.5); e_widget_toolbook_page_append(otb, NULL, _("Sync"), ol, 0, 0, 0, 0, 0.5, 0.0); ol = e_widget_list_add(evas, 0, 0); @@ -1328,6 +1334,7 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata) (cfdata->fps_show != _comp_mod->conf->fps_show) || (cfdata->fps_corner != _comp_mod->conf->fps_corner) || (cfdata->fps_average_range != _comp_mod->conf->fps_average_range) || + (cfdata->first_draw_delay != _comp_mod->conf->first_draw_delay) || (cfdata->match.changed) ) { @@ -1391,6 +1398,7 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata) _comp_mod->conf->fps_show = cfdata->fps_show; _comp_mod->conf->fps_corner = cfdata->fps_corner; _comp_mod->conf->fps_average_range = cfdata->fps_average_range; + _comp_mod->conf->first_draw_delay = cfdata->first_draw_delay; if (_comp_mod->conf->shadow_style) eina_stringshare_del(_comp_mod->conf->shadow_style); _comp_mod->conf->shadow_style = NULL; diff --git a/src/modules/comp/e_mod_main.c b/src/modules/comp/e_mod_main.c index 77c5e9fa4..168d021f5 100644 --- a/src/modules/comp/e_mod_main.c +++ b/src/modules/comp/e_mod_main.c @@ -90,6 +90,7 @@ e_modapi_init(E_Module *m) E_CONFIG_VAL(D, T, send_dump, UCHAR); E_CONFIG_VAL(D, T, nocomp_fs, UCHAR); E_CONFIG_VAL(D, T, smooth_windows, UCHAR); + E_CONFIG_VAL(D, T, first_draw_delay, DOUBLE); E_CONFIG_LIST(D, T, match.popups, mod->conf_match_edd); E_CONFIG_LIST(D, T, match.borders, mod->conf_match_edd); E_CONFIG_LIST(D, T, match.overrides, mod->conf_match_edd); @@ -103,6 +104,9 @@ e_modapi_init(E_Module *m) e_config->use_composite = 1; e_config_save_queue(); } + /* XXX remove: update old configs. add config versioning */ + if (mod->conf->first_draw_delay == 0) + mod->conf->first_draw_delay = 0.05; _comp_mod = mod; @@ -145,6 +149,7 @@ _e_mod_config_new(E_Module *m) mod->conf->send_dump = 0; // implement mod->conf->nocomp_fs = 0; // buggy mod->conf->smooth_windows = 0; + mod->conf->first_draw_delay = 0.05; mod->conf->match.popups = NULL; mat = E_NEW(Match, 1); @@ -165,6 +170,11 @@ _e_mod_config_new(E_Module *m) mat->shadow_style = eina_stringshare_add("none"); mat = E_NEW(Match, 1); mod->conf->match.overrides = eina_list_append(mod->conf->match.overrides, mat); + mat->name = eina_stringshare_add("E"); + mat->clas = eina_stringshare_add("everything"); + mat->shadow_style = eina_stringshare_add("popup"); + mat = E_NEW(Match, 1); + mod->conf->match.overrides = eina_list_append(mod->conf->match.overrides, mat); mat->primary_type = ECORE_X_WINDOW_TYPE_DROPDOWN_MENU; mat->shadow_style = eina_stringshare_add("menu"); mat = E_NEW(Match, 1); diff --git a/src/modules/comp/e_mod_main.h b/src/modules/comp/e_mod_main.h index a7595a5c4..860f0f75d 100644 --- a/src/modules/comp/e_mod_main.h +++ b/src/modules/comp/e_mod_main.h @@ -30,8 +30,9 @@ struct _Config unsigned char send_dump; unsigned char nocomp_fs; unsigned char smooth_windows; + double first_draw_delay; - struct { + struct { Eina_List *popups; // used for e popups Eina_List *borders; // used for borders Eina_List *overrides; // used for client menus, tooltips etc.