diff --git a/src/modules/comp/Makefile.am b/src/modules/comp/Makefile.am index b3408ef7d..b2768b0eb 100644 --- a/src/modules/comp/Makefile.am +++ b/src/modules/comp/Makefile.am @@ -4,8 +4,7 @@ MODULE = comp # data files for the module filesdir = $(libdir)/enlightenment/modules/$(MODULE) files_DATA = \ -e-module-$(MODULE).edj module.desktop \ -shadow.edj +e-module-$(MODULE).edj module.desktop EXTRA_DIST = $(files_DATA) diff --git a/src/modules/comp/e_mod_comp.c b/src/modules/comp/e_mod_comp.c index 7aff723e3..ecff51a1a 100644 --- a/src/modules/comp/e_mod_comp.c +++ b/src/modules/comp/e_mod_comp.c @@ -1579,13 +1579,6 @@ _e_mod_comp_win_shadow_setup(E_Comp_Win *cw) "base/theme/borders", "e/comp/none"); } - // use different shadow objects/group per window type? - if (!ok) - { - if (_comp_mod->conf->shadow_file) - ok = edje_object_file_set(cw->shobj, _comp_mod->conf->shadow_file, - "shadow"); - } if (!ok) { if (_comp_mod->conf->shadow_style) @@ -1599,18 +1592,9 @@ _e_mod_comp_win_shadow_setup(E_Comp_Win *cw) ok = e_theme_edje_object_set(cw->shobj, "base/theme/borders", "e/comp/default"); } - if (!ok) // fallback to local shadow.edj - will go when default theme supports this - { - snprintf(buf, sizeof(buf), "%s/shadow.edj", - e_module_dir_get(_comp_mod->module)); - ok = edje_object_file_set(cw->shobj, buf, "shadow"); - } edje_object_part_swallow(cw->shobj, "e.swallow.content", cw->obj); - if (!_comp_mod->conf->use_shadow - || (cw->bd && cw->bd->client.e.state.video)) - { - edje_object_signal_emit(cw->shobj, "e,state,shadow,off", "e"); - } + if (cw->bd && cw->bd->client.e.state.video) + edje_object_signal_emit(cw->shobj, "e,state,shadow,off", "e"); else { if (_e_mod_comp_win_do_shadow(cw)) diff --git a/src/modules/comp/e_mod_comp_cfdata.c b/src/modules/comp/e_mod_comp_cfdata.c index b31067cfc..686252af3 100644 --- a/src/modules/comp/e_mod_comp_cfdata.c +++ b/src/modules/comp/e_mod_comp_cfdata.c @@ -30,7 +30,6 @@ e_mod_comp_cfdata_edd_init(E_Config_DD **conf_edd, E_Config_DD **match_edd) #undef D #define T Config #define D *conf_edd - E_CONFIG_VAL(D, T, shadow_file, STR); E_CONFIG_VAL(D, T, shadow_style, STR); E_CONFIG_VAL(D, T, engine, INT); E_CONFIG_VAL(D, T, max_unmapped_pixels, INT); @@ -39,7 +38,6 @@ e_mod_comp_cfdata_edd_init(E_Config_DD **conf_edd, E_Config_DD **match_edd) E_CONFIG_VAL(D, T, fps_average_range, INT); E_CONFIG_VAL(D, T, fps_corner, UCHAR); E_CONFIG_VAL(D, T, fps_show, UCHAR); - E_CONFIG_VAL(D, T, use_shadow, UCHAR); E_CONFIG_VAL(D, T, indirect, UCHAR); E_CONFIG_VAL(D, T, texture_from_pixmap, UCHAR); E_CONFIG_VAL(D, T, lock_fps, UCHAR); @@ -66,7 +64,6 @@ e_mod_comp_cfdata_config_new(void) Match *mat; cfg = E_NEW(Config, 1); - cfg->shadow_file = NULL; cfg->shadow_style = eina_stringshare_add("default"); cfg->engine = ENGINE_SW; cfg->max_unmapped_pixels = 32 * 1024; // implement @@ -75,7 +72,6 @@ e_mod_comp_cfdata_config_new(void) cfg->fps_average_range = 30; cfg->fps_corner = 0; cfg->fps_show = 0; - cfg->use_shadow = 1; cfg->indirect = 0; cfg->texture_from_pixmap = 1; cfg->lock_fps = 1; @@ -159,7 +155,6 @@ _match_list_free(Eina_List *list) EAPI void e_mod_cfdata_config_free(Config *cfg) { - if (cfg->shadow_file) eina_stringshare_del(cfg->shadow_file); if (cfg->shadow_style) eina_stringshare_del(cfg->shadow_style); _match_list_free(cfg->match.popups); diff --git a/src/modules/comp/e_mod_comp_cfdata.h b/src/modules/comp/e_mod_comp_cfdata.h index fb87d656f..33cb9ff13 100644 --- a/src/modules/comp/e_mod_comp_cfdata.h +++ b/src/modules/comp/e_mod_comp_cfdata.h @@ -6,7 +6,6 @@ typedef struct _Match Match; struct _Config { - const char *shadow_file; const char *shadow_style; int engine; int max_unmapped_pixels; @@ -15,7 +14,6 @@ struct _Config int fps_average_range; unsigned char fps_corner; unsigned char fps_show; - unsigned char use_shadow; unsigned char indirect; unsigned char texture_from_pixmap; unsigned char lock_fps; diff --git a/src/modules/comp/e_mod_config.c b/src/modules/comp/e_mod_config.c index 2d608dd47..9598c476a 100644 --- a/src/modules/comp/e_mod_config.c +++ b/src/modules/comp/e_mod_config.c @@ -24,7 +24,6 @@ typedef struct _Match_Config struct _E_Config_Dialog_Data { - int use_shadow; int engine; int indirect; int texture_from_pixmap; @@ -76,6 +75,11 @@ static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); +static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, + Evas *evas, + E_Config_Dialog_Data *cfdata); +static int _advanced_apply_data(E_Config_Dialog *cfd, + E_Config_Dialog_Data *cfdata); E_Config_Dialog * e_int_config_comp_module(E_Container *con, @@ -93,7 +97,9 @@ e_int_config_comp_module(E_Container *con, v->free_cfdata = _free_data; v->basic.apply_cfdata = _basic_apply_data; v->basic.create_widgets = _basic_create_widgets; - + v->advanced.apply_cfdata = _advanced_apply_data; + v->advanced.create_widgets = _advanced_create_widgets; + snprintf(buf, sizeof(buf), "%s/e-module-comp.edj", e_module_dir_get(mod->module)); cfd = e_config_dialog_new(con, _("Composite Settings"), @@ -124,7 +130,6 @@ _create_data(E_Config_Dialog *cfd) cfdata = E_NEW(E_Config_Dialog_Data, 1); - cfdata->use_shadow = _comp_mod->conf->use_shadow; cfdata->engine = _comp_mod->conf->engine; if ((cfdata->engine != ENGINE_SW) && (cfdata->engine != ENGINE_GL)) @@ -233,28 +238,6 @@ _free_data(E_Config_Dialog *cfd __UNUSED__, free(cfdata); } -static void -_shadow_changed(void *data, - Evas_Object *obj, - void *event_info __UNUSED__) -{ - E_Config_Dialog_Data *cfdata = data; - Evas_Object *orec0; - Eina_List *style_list; - const E_Demo_Style_Item *it; - const Eina_List *l; - - orec0 = evas_object_name_find(evas_object_evas_get(obj), "style_shadows"); - style_list = evas_object_data_get(orec0, "list"); - EINA_LIST_FOREACH(style_list, l, it) - { - if (cfdata->use_shadow) - edje_object_signal_emit(it->preview, "e,state,shadow,on", "e"); - else - edje_object_signal_emit(it->preview, "e,state,shadow,off", "e"); - } -} - static Eina_Bool _style_demo(void *data) { @@ -347,7 +330,6 @@ _style_selector_del(void *data __UNUSED__, static Evas_Object * _style_selector(Evas *evas, - int use_shadow, const char **source) { Evas_Object *oi, *ob, *oo, *obd, *orec, *oly, *orec0; @@ -390,7 +372,7 @@ _style_selector(Evas *evas, e_layout_pack(oly, oo); e_layout_child_move(oo, 39, 39); e_layout_child_resize(oo, 162, 162); - if (use_shadow) edje_object_signal_emit(oo, "e,state,shadow,on", "e"); + edje_object_signal_emit(oo, "e,state,shadow,on", "e"); edje_object_signal_emit(oo, "e,state,visible,on", "e"); evas_object_show(oo); @@ -622,7 +604,7 @@ _edit_ok(void *d1, void *d2) { Match_Config *m = d1; - Evas_Object *dia, *bg, *of = d2; + Evas_Object *dia, *bg, *of = d2; Evas_Object *il; char *label; int n; @@ -925,7 +907,7 @@ _create_edit_frame(E_Config_Dialog *cfd, e_widget_toolbook_page_append(tb, NULL, _("Flags"), tab2, 1, 1, 1, 1, 0.5, 0.0); - oi = _style_selector(evas, cfdata->use_shadow, &(m->match.shadow_style)); + oi = _style_selector(evas, &(m->match.shadow_style)); e_widget_toolbook_page_append(tb, NULL, _("Style"), oi, 1, 1, 1, 1, 0.5, 0.0); @@ -1131,7 +1113,7 @@ _create_styles_toolbook(E_Config_Dialog *cfd, tb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale); - oi = _style_selector(evas, cfdata->use_shadow, &(cfdata->shadow_style)); + oi = _style_selector(evas, &(cfdata->shadow_style)); e_widget_toolbook_page_append(tb, NULL, _("Default"), oi, 1, 1, 1, 1, 0.5, 0.0); oi = _create_match_editor(cfd, evas, cfdata, &(cfdata->match.borders), &il); @@ -1156,11 +1138,11 @@ _create_styles_toolbook(E_Config_Dialog *cfd, } static Evas_Object * -_basic_create_widgets(E_Config_Dialog *cfd, - Evas *evas, - E_Config_Dialog_Data *cfdata) +_advanced_create_widgets(E_Config_Dialog *cfd, + Evas *evas, + E_Config_Dialog_Data *cfdata) { - Evas_Object *ob, *ol, *ol2, *of, *otb, *oi, *orec0, *tab; + Evas_Object *ob,*ol, *ol2, *of, *otb, *oi, *orec0, *tab; E_Radio_Group *rg; orec0 = evas_object_rectangle_add(evas); @@ -1173,9 +1155,6 @@ _basic_create_widgets(E_Config_Dialog *cfd, /////////////////////////////////////////// ol = e_widget_list_add(evas, 0, 0); - ob = e_widget_check_add(evas, _("Shadows"), &(cfdata->use_shadow)); - evas_object_smart_callback_add(ob, "changed", _shadow_changed, cfdata); - e_widget_list_object_append(ol, ob, 1, 0, 0.5); ob = e_widget_check_add(evas, _("Limit framerate"), &(cfdata->lock_fps)); e_widget_list_object_append(ol, ob, 1, 0, 0.5); ob = e_widget_check_add(evas, _("Smooth scaling"), &(cfdata->smooth_windows)); @@ -1205,6 +1184,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, 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); rg = e_widget_radio_group_new(&(cfdata->engine)); ob = e_widget_radio_add(evas, _("Software"), ENGINE_SW, rg); @@ -1220,8 +1200,6 @@ _basic_create_widgets(E_Config_Dialog *cfd, e_widget_framelist_content_align_set(of, 0.5, 0.0); ob = e_widget_check_add(evas, _("Texture from pixmap"), &(cfdata->texture_from_pixmap)); e_widget_framelist_object_append(of, ob); - ob = e_widget_label_add(evas, _("Ctrl+Alt+Shift+Home resets compositor")); - e_widget_framelist_object_append(of, ob); ob = e_widget_check_add(evas, _("Indirect OpenGL (EXPERIMENTAL)"), &(cfdata->indirect)); e_widget_framelist_object_append(of, ob); e_widget_list_object_append(ol, of, 1, 1, 0.5); @@ -1235,7 +1213,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, e_widget_list_object_append(ol, ob, 1, 1, 0.5); ob = e_widget_check_add(evas, _("Send dump"), &(cfdata->send_dump)); e_widget_list_object_append(ol, ob, 1, 1, 0.5); - ob = e_widget_check_add(evas, _("Don't composite fullscreen"), &(cfdata->nocomp_fs)); + ob = e_widget_check_add(evas, _("Don't composite fullscreen windows"), &(cfdata->nocomp_fs)); e_widget_list_object_append(ol, ob, 1, 1, 0.5); ob = e_widget_check_add(evas, _("Keep hidden windows"), &(cfdata->keep_unmapped)); e_widget_list_object_append(ol, ob, 1, 1, 0.5); @@ -1372,11 +1350,188 @@ _match_dup2(Match_Config *m2, } static int -_basic_apply_data(E_Config_Dialog *cfd __UNUSED__, - E_Config_Dialog_Data *cfdata) +_advanced_apply_data(E_Config_Dialog *cfd __UNUSED__, + E_Config_Dialog_Data *cfdata) { - if ((cfdata->use_shadow != _comp_mod->conf->use_shadow) || - (cfdata->lock_fps != _comp_mod->conf->lock_fps) || + if ((cfdata->lock_fps != _comp_mod->conf->lock_fps) || + (cfdata->smooth_windows != _comp_mod->conf->smooth_windows) || + (cfdata->grab != _comp_mod->conf->grab) || + (cfdata->keep_unmapped != _comp_mod->conf->keep_unmapped) || + (cfdata->nocomp_fs != _comp_mod->conf->nocomp_fs) || + (cfdata->shadow_style != _comp_mod->conf->shadow_style) || + (cfdata->max_unmapped_pixels != _comp_mod->conf->max_unmapped_pixels) || + (cfdata->max_unmapped_time != _comp_mod->conf->max_unmapped_time) || + (cfdata->min_unmapped_time != _comp_mod->conf->min_unmapped_time) || + (cfdata->send_flush != _comp_mod->conf->send_flush) || + (cfdata->send_dump != _comp_mod->conf->send_dump) || + (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) + ) + { + if (cfdata->match.changed) + { + Eina_List *l; + Match *m; + Match_Config *m2; + + _match_list_free(_comp_mod->conf->match.popups); + _match_list_free(_comp_mod->conf->match.borders); + _match_list_free(_comp_mod->conf->match.overrides); + _match_list_free(_comp_mod->conf->match.menus); + + _comp_mod->conf->match.popups = NULL; + _comp_mod->conf->match.borders = NULL; + _comp_mod->conf->match.overrides = NULL; + _comp_mod->conf->match.menus = NULL; + + EINA_LIST_FOREACH(cfdata->match.popups, l, m2) + { + m = E_NEW(Match, 1); + _match_dup2(m2, m); + _comp_mod->conf->match.popups = + eina_list_append(_comp_mod->conf->match.popups, m); + } + EINA_LIST_FOREACH(cfdata->match.borders, l, m2) + { + m = E_NEW(Match, 1); + _match_dup2(m2, m); + _comp_mod->conf->match.borders = + eina_list_append(_comp_mod->conf->match.borders, m); + } + EINA_LIST_FOREACH(cfdata->match.overrides, l, m2) + { + m = E_NEW(Match, 1); + _match_dup2(m2, m); + _comp_mod->conf->match.overrides = + eina_list_append(_comp_mod->conf->match.overrides, m); + } + EINA_LIST_FOREACH(cfdata->match.menus, l, m2) + { + m = E_NEW(Match, 1); + _match_dup2(m2, m); + _comp_mod->conf->match.menus = + eina_list_append(_comp_mod->conf->match.menus, m); + } + cfdata->match.changed = 0; + } + _comp_mod->conf->lock_fps = cfdata->lock_fps; + _comp_mod->conf->smooth_windows = cfdata->smooth_windows; + _comp_mod->conf->grab = cfdata->grab; + _comp_mod->conf->keep_unmapped = cfdata->keep_unmapped; + _comp_mod->conf->nocomp_fs = cfdata->nocomp_fs; + _comp_mod->conf->max_unmapped_pixels = cfdata->max_unmapped_pixels; + _comp_mod->conf->max_unmapped_time = cfdata->max_unmapped_time; + _comp_mod->conf->min_unmapped_time = cfdata->min_unmapped_time; + _comp_mod->conf->send_flush = cfdata->send_flush; + _comp_mod->conf->send_dump = cfdata->send_dump; + _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; + if (cfdata->shadow_style) + _comp_mod->conf->shadow_style = eina_stringshare_add(cfdata->shadow_style); + e_mod_comp_shadow_set(); + } + if ((cfdata->engine != _comp_mod->conf->engine) || + (cfdata->indirect != _comp_mod->conf->indirect) || + (cfdata->texture_from_pixmap != _comp_mod->conf->texture_from_pixmap) || + (cfdata->efl_sync != _comp_mod->conf->efl_sync) || + (cfdata->loose_sync != _comp_mod->conf->loose_sync) || + (cfdata->vsync != _comp_mod->conf->vsync)) + { + E_Action *a; + + _comp_mod->conf->engine = cfdata->engine; + _comp_mod->conf->indirect = cfdata->indirect; + _comp_mod->conf->texture_from_pixmap = cfdata->texture_from_pixmap; + _comp_mod->conf->efl_sync = cfdata->efl_sync; + _comp_mod->conf->loose_sync = cfdata->loose_sync; + _comp_mod->conf->vsync = cfdata->vsync; + + a = e_action_find("restart"); + if ((a) && (a->func.go)) a->func.go(NULL, NULL); +// e_mod_comp_shutdown(); +// e_mod_comp_init(); + } + e_config_save_queue(); + return 1; +} + +static Evas_Object * +_basic_create_widgets(E_Config_Dialog *cfd, + Evas *evas, + E_Config_Dialog_Data *cfdata) +{ + Evas_Object *ob,*ol, *ol2, *of, *otb, *oi, *orec0, *tab; + E_Radio_Group *rg; + + orec0 = evas_object_rectangle_add(evas); + evas_object_name_set(orec0, "style_shadows"); + + tab = e_widget_table_add(evas, 0); + evas_object_name_set(tab, "dia_table"); + + otb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale); + + /////////////////////////////////////////// + ol = e_widget_list_add(evas, 0, 0); + + ob = e_widget_check_add(evas, _("Sync screen (VBlank)"), &(cfdata->vsync)); + e_widget_list_object_append(ol, ob, 1, 0, 0.5); + + ob = e_widget_check_add(evas, _("Smooth scaling"), &(cfdata->smooth_windows)); + e_widget_list_object_append(ol, ob, 1, 0, 0.5); + + ob = e_widget_check_add(evas, _("Don't composite fullscreen windows"), &(cfdata->nocomp_fs)); + e_widget_list_object_append(ol, ob, 1, 0, 0.5); + + of = e_widget_frametable_add(evas, _("Select default style"), 0); + e_widget_frametable_content_align_set(of, 0.5, 0.5); + oi = _style_selector(evas, &(cfdata->shadow_style)); + e_widget_frametable_object_append(of, oi, 0, 0, 1, 1, 1, 1, 1, 1); + e_widget_list_object_append(ol, of, 1, 1, 0.5); + + e_widget_toolbook_page_append(otb, NULL, _("General"), ol, 1, 1, 1, 1, 0.5, 0.0); + + /////////////////////////////////////////// + ol = e_widget_list_add(evas, 0, 0); + rg = e_widget_radio_group_new(&(cfdata->engine)); + ob = e_widget_radio_add(evas, _("Software"), ENGINE_SW, rg); + e_widget_list_object_append(ol, ob, 1, 1, 0.5); + if (!getenv("ECORE_X_NO_XLIB")) + { + if (ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_OPENGL_X11)) + { + ob = e_widget_radio_add(evas, _("OpenGL"), ENGINE_GL, rg); + e_widget_list_object_append(ol, ob, 1, 1, 0.5); + } + } + ob = e_widget_label_add(evas, _("To reset compositor:")); + e_widget_list_object_append(ol, ob, 1, 1, 0.5); + ob = e_widget_label_add(evas, _("Ctrl+Alt+Shift+Home")); + e_widget_list_object_append(ol, ob, 1, 1, 0.5); + + e_widget_toolbook_page_append(otb, NULL, _("Rendering"), ol, 0, 0, 0, 0, 0.5, 0.0); + + e_widget_toolbook_page_show(otb, 0); + + e_dialog_resizable_set(cfd->dia, 1); + + e_widget_table_object_append(tab, otb, 0, 0, 1, 1, 1, 1, 1, 1); + return tab; +} + +static int +_basic_apply_data(E_Config_Dialog *cfd __UNUSED__, + E_Config_Dialog_Data *cfdata) +{ + if ((cfdata->lock_fps != _comp_mod->conf->lock_fps) || (cfdata->smooth_windows != _comp_mod->conf->smooth_windows) || (cfdata->grab != _comp_mod->conf->grab) || (cfdata->keep_unmapped != _comp_mod->conf->keep_unmapped) || @@ -1440,7 +1595,6 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, } cfdata->match.changed = 0; } - _comp_mod->conf->use_shadow = cfdata->use_shadow; _comp_mod->conf->lock_fps = cfdata->lock_fps; _comp_mod->conf->smooth_windows = cfdata->smooth_windows; _comp_mod->conf->grab = cfdata->grab; diff --git a/src/modules/comp/shadow.edj b/src/modules/comp/shadow.edj deleted file mode 100644 index 31bfc910c..000000000 Binary files a/src/modules/comp/shadow.edj and /dev/null differ