From 70e40291f6217317c85cc8a708a9ee84c73acd79 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 11 Jan 2013 09:21:39 +0000 Subject: [PATCH] another new comp option for disabling screen effects (fading on blank) SVN revision: 82623 --- ChangeLog | 1 + NEWS | 1 + data/themes/edc/comp.edc | 57 ++++++++++++++++++++++++++++ src/bin/e_comp.c | 22 ++++++++++- src/bin/e_comp_cfdata.c | 1 + src/bin/e_comp_cfdata.h | 1 + src/modules/conf_comp/e_mod_config.c | 14 +++++-- 7 files changed, 91 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 76d7c3369..b0bd65040 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ 2013-01-11 Mike Blumenkrantz * e_manager_comp_set() is no longer accessible by modules + * added option to disable comp effects on screen 2013-01-10 Carsten Haitzler diff --git a/NEWS b/NEWS index 3dc420754..9f8a96bc6 100644 --- a/NEWS +++ b/NEWS @@ -24,6 +24,7 @@ Additions: * Added option for disabling pointer warping when performing directional focus changes using winlist * comp settings now uses the "e_comp" config domain * added options to disable comp effects on types of windows + * added option to disable comp effects on screen Changes: Modules: diff --git a/data/themes/edc/comp.edc b/data/themes/edc/comp.edc index 99ee56b31..d9ceef767 100644 --- a/data/themes/edc/comp.edc +++ b/data/themes/edc/comp.edc @@ -81,30 +81,35 @@ group { name: "e/modules/comp/screen/overlay/default"; } programs { program { + name: "screensaver_on"; signal: "e,state,screensaver,on"; source: "e"; action: STATE_SET "visible" 0.0; transition: ACCELERATE 3.0 CURRENT; target: "blanker"; } program { + name: "screensaver_on2"; signal: "e,state,screensaver,on"; source: "e"; action: STATE_SET "visible" 0.0; transition: DECELERATE 1.5 CURRENT; target: "shadow"; } program { + name: "screensaver_off"; signal: "e,state,screensaver,off"; source: "e"; action: STATE_SET "default" 0.0; transition: ACCELERATE 0.5 CURRENT; target: "blanker"; } program { + name: "screensaver_off2"; signal: "e,state,screensaver,off"; source: "e"; action: STATE_SET "default" 0.0; transition: ACCELERATE 0.25 CURRENT; target: "shadow"; } program { + name: "suspend"; signal: "e,state,sys,suspend"; source: "e"; action: STATE_SET "visible" 0.0; transition: ACCELERATE 0.5 CURRENT; @@ -115,6 +120,7 @@ group { name: "e/modules/comp/screen/overlay/default"; action: SIGNAL_EMIT "e,state,sys,suspend,done" "e"; } program { + name: "hibernate"; signal: "e,state,sys,hibernate"; source: "e"; action: STATE_SET "visible" 0.0; transition: ACCELERATE 0.5 CURRENT; @@ -125,12 +131,14 @@ group { name: "e/modules/comp/screen/overlay/default"; action: SIGNAL_EMIT "e,state,sys,hibernate,done" "e"; } program { + name: "resume"; signal: "e,state,sys,resume"; source: "e"; action: STATE_SET "default" 0.0; transition: DECELERATE 1.0 CURRENT; target: "suspender"; } program { + name: "reboot"; signal: "e,state,sys,reboot"; source: "e"; action: STATE_SET "visible" 0.0; transition: ACCELERATE 0.5 CURRENT; @@ -141,6 +149,7 @@ group { name: "e/modules/comp/screen/overlay/default"; action: SIGNAL_EMIT "e,state,sys,reboot,done" "e"; } program { + name: "halt"; signal: "e,state,sys,halt"; source: "e"; action: STATE_SET "visible" 0.0; transition: ACCELERATE 0.5 CURRENT; @@ -151,6 +160,7 @@ group { name: "e/modules/comp/screen/overlay/default"; action: SIGNAL_EMIT "e,state,sys,halt,done" "e"; } program { + name: "logout"; signal: "e,state,sys,logout"; source: "e"; action: STATE_SET "visible" 0.0; transition: ACCELERATE 0.5 CURRENT; @@ -163,6 +173,53 @@ group { name: "e/modules/comp/screen/overlay/default"; } } + +group { name: "e/modules/comp/screen/overlay/noeffects"; + inherit: "e/modules/comp/screen/overlay/default"; + programs { + program { + name: "screensaver_on"; + transition: ACCELERATE 0 CURRENT; + } + program { + name: "screensaver_on2"; + transition: DECELERATE 0 CURRENT; + } + program { + name: "screensaver_off"; + transition: ACCELERATE 0 CURRENT; + } + program { + name: "screensaver_off2"; + transition: ACCELERATE 0 CURRENT; + } + program { + name: "suspend"; + transition: ACCELERATE 0 CURRENT; + } + program { + name: "hibernate"; + transition: ACCELERATE 0 CURRENT; + } + program { + name: "resume"; + transition: DECELERATE 1 CURRENT; + } + program { + name: "reboot"; + transition: ACCELERATE 0 CURRENT; + } + program { + name: "halt"; + transition: ACCELERATE 0 CURRENT; + } + program { + name: "logout"; + transition: ACCELERATE 0 CURRENT; + } + } +} + group { name: "e/comp/default"; alias: "e/comp/popup"; images.image: "win_shadow.png" COMP; diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index fc8b97331..10228ff1a 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -3131,7 +3131,18 @@ static void _e_comp_zone_fill(E_Comp *c, E_Comp_Zone *cz) { Evas_Object *o; + const char *const styles[] = + { + "e/modules/comp/screen/overlay/default", + "e/modules/comp/screen/overlay/noeffects" + }; + if (cz->over) + { + e_theme_edje_object_set(cz->over, "base/theme/modules/comp", + styles[conf->disable_screen_effects]); + return; + } cz->base = o = edje_object_add(c->evas); e_theme_edje_object_set(o, "base/theme/modules/comp", "e/modules/comp/screen/base/default"); @@ -3142,7 +3153,7 @@ _e_comp_zone_fill(E_Comp *c, E_Comp_Zone *cz) cz->over = o = edje_object_add(c->evas); e_theme_edje_object_set(o, "base/theme/modules/comp", - "e/modules/comp/screen/overlay/default"); + styles[conf->disable_screen_effects]); evas_object_move(o, cz->zone->x, cz->zone->y); evas_object_resize(o, cz->zone->w, cz->zone->h); evas_object_raise(o); @@ -4105,6 +4116,10 @@ _e_comp_cfg_init(void) E_CONFIGURE_OPTION_ADD(co, BOOL, match.disable_overrides, conf, _("Disable composite effects for override-redirect windows (tooltips and such)"), _("composite"), _("theme"), _("animate")); co->funcs[1].none = co->funcs[0].none = e_comp_shadows_reset; cfg_opts = eina_inlist_append(cfg_opts, EINA_INLIST_GET(co)); + E_CONFIGURE_OPTION_ADD(co, BOOL, match.disable_overrides, conf, _("Disable composite effects for the screen"), _("composite"), _("theme"), _("animate"), _("screen")); + E_CONFIGURE_OPTION_HELP(co, _("This option disables composite effects from themes, such as animating the screen fade when blanking")); + co->funcs[1].none = co->funcs[0].none = e_comp_shadows_reset; + cfg_opts = eina_inlist_append(cfg_opts, EINA_INLIST_GET(co)); E_CONFIGURE_OPTION_ADD(co, BOOL, smooth_windows, conf, _("Smooth scaling of composited window content"), _("composite"), _("border")); co->funcs[1].none = co->funcs[0].none = e_comp_shadows_reset; cfg_opts = eina_inlist_append(cfg_opts, EINA_INLIST_GET(co)); @@ -4276,15 +4291,18 @@ e_comp_config_get(void) EAPI void e_comp_shadows_reset(void) { - Eina_List *l; + Eina_List *l, *ll; E_Comp *c; EINA_LIST_FOREACH(compositors, l, c) { E_Comp_Win *cw; + E_Comp_Zone *cz; // ecore_evas_manual_render_set(c->ee, conf->lock_fps); _e_comp_fps_update(c); + EINA_LIST_FOREACH(c->zones, ll, cz) + _e_comp_zone_fill(c, cz); EINA_INLIST_FOREACH(c->wins, cw) { if ((cw->shobj) && (cw->obj)) diff --git a/src/bin/e_comp_cfdata.c b/src/bin/e_comp_cfdata.c index cd6e372b2..ffe3017f5 100644 --- a/src/bin/e_comp_cfdata.c +++ b/src/bin/e_comp_cfdata.c @@ -53,6 +53,7 @@ e_comp_cfdata_edd_init(E_Config_DD **conf_edd, E_Config_DD **match_edd) 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_VAL(D, T, disable_screen_effects, UCHAR); E_CONFIG_VAL(D, T, match.disable_popups, UCHAR); E_CONFIG_VAL(D, T, match.disable_borders, UCHAR); E_CONFIG_VAL(D, T, match.disable_overrides, UCHAR); diff --git a/src/bin/e_comp_cfdata.h b/src/bin/e_comp_cfdata.h index 91f939f61..e588d72d9 100644 --- a/src/bin/e_comp_cfdata.h +++ b/src/bin/e_comp_cfdata.h @@ -28,6 +28,7 @@ struct _E_Comp_Config unsigned char nocomp_fs; unsigned char smooth_windows; double first_draw_delay; + Eina_Bool disable_screen_effects; struct { diff --git a/src/modules/conf_comp/e_mod_config.c b/src/modules/conf_comp/e_mod_config.c index fbde3b998..97742d5f6 100644 --- a/src/modules/conf_comp/e_mod_config.c +++ b/src/modules/conf_comp/e_mod_config.c @@ -72,6 +72,7 @@ struct _E_Config_Dialog_Data int fps_corner; int fps_average_range; double first_draw_delay; + int disable_screen_effects; }; /* Protos */ @@ -1171,13 +1172,15 @@ _advanced_create_widgets(E_Config_Dialog *cfd, e_widget_list_object_append(ol, ob, 1, 0, 0.5); - ob = e_widget_check_add(evas, _("Disable composite theming for windows"), &(cfdata->match.disable_borders)); + ob = e_widget_check_add(evas, _("Disable composite effects for windows"), &(cfdata->match.disable_borders)); e_widget_list_object_append(ol, ob, 1, 0, 0.5); - ob = e_widget_check_add(evas, _("Disable composite theming for menus"), &(cfdata->match.disable_menus)); + ob = e_widget_check_add(evas, _("Disable composite effects for menus"), &(cfdata->match.disable_menus)); e_widget_list_object_append(ol, ob, 1, 0, 0.5); - ob = e_widget_check_add(evas, _("Disable composite theming for popups"), &(cfdata->match.disable_popups)); + ob = e_widget_check_add(evas, _("Disable composite effects for popups"), &(cfdata->match.disable_popups)); e_widget_list_object_append(ol, ob, 1, 0, 0.5); - ob = e_widget_check_add(evas, _("Disable composite theming for overrides"), &(cfdata->match.disable_overrides)); + ob = e_widget_check_add(evas, _("Disable composite effects for overrides"), &(cfdata->match.disable_overrides)); + e_widget_list_object_append(ol, ob, 1, 0, 0.5); + ob = e_widget_check_add(evas, _("Disable composite effects for screen"), &(cfdata->disable_screen_effects)); e_widget_list_object_append(ol, ob, 1, 0, 0.5); of = e_widget_frametable_add(evas, _("Styles"), 0); @@ -1415,6 +1418,7 @@ _advanced_apply_data(E_Config_Dialog *cfd __UNUSED__, (_comp_mod->conf->match.disable_borders != cfdata->match.disable_borders) || (_comp_mod->conf->match.disable_overrides != cfdata->match.disable_overrides) || (_comp_mod->conf->match.disable_menus != cfdata->match.disable_menus) || + (_comp_mod->conf->disable_screen_effects != cfdata->disable_screen_effects) || (cfdata->match.changed) ) { @@ -1468,6 +1472,7 @@ _advanced_apply_data(E_Config_Dialog *cfd __UNUSED__, _comp_mod->conf->match.disable_borders = cfdata->match.disable_borders; _comp_mod->conf->match.disable_overrides = cfdata->match.disable_overrides; _comp_mod->conf->match.disable_menus = cfdata->match.disable_menus; + _comp_mod->conf->disable_screen_effects = cfdata->disable_screen_effects; _comp_mod->conf->lock_fps = cfdata->lock_fps; _comp_mod->conf->smooth_windows = cfdata->smooth_windows; _comp_mod->conf->grab = cfdata->grab; @@ -1670,6 +1675,7 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, _comp_mod->conf->match.disable_borders = cfdata->match.disable_borders = cfdata->match.disable_all; _comp_mod->conf->match.disable_overrides = cfdata->match.disable_overrides = cfdata->match.disable_all; _comp_mod->conf->match.disable_menus = cfdata->match.disable_menus = cfdata->match.disable_all; + _comp_mod->conf->disable_screen_effects = cfdata->disable_screen_effects = cfdata->match.disable_all; } _comp_mod->conf->lock_fps = cfdata->lock_fps; _comp_mod->conf->smooth_windows = cfdata->smooth_windows;