Add composite support for popups (shelves, menus and exebuf)

configurable via enlightenment_remote.


SVN revision: 27081
This commit is contained in:
metrics 2006-11-13 07:26:14 +00:00 committed by metrics
parent 2d3c6a7ecb
commit 33a1a91f02
5 changed files with 55 additions and 1 deletions

View File

@ -360,6 +360,7 @@ e_config_init(void)
E_CONFIG_VAL(D, T, evas_engine_drag, INT); /**/
E_CONFIG_VAL(D, T, evas_engine_win, INT); /**/
E_CONFIG_VAL(D, T, evas_engine_zone, INT); /**/
E_CONFIG_VAL(D, T, use_composite, INT); /**/
E_CONFIG_VAL(D, T, language, STR); /**/
E_CONFIG_LIST(D, T, modules, _e_config_module_edd); /**/
E_CONFIG_LIST(D, T, font_fallbacks, _e_config_font_fallback_edd); /**/
@ -579,6 +580,7 @@ e_config_init(void)
e_config->evas_engine_drag = E_EVAS_ENGINE_DEFAULT;
e_config->evas_engine_win = E_EVAS_ENGINE_DEFAULT;
e_config->evas_engine_zone = E_EVAS_ENGINE_DEFAULT;
e_config->use_composite = 0;
e_config->language = NULL;
e_config->window_placement_policy = E_WINDOW_PLACEMENT_SMART;
e_config->focus_policy = E_FOCUS_SLOPPY;

View File

@ -109,6 +109,7 @@ struct _E_Config
int evas_engine_drag; // NO GUI - maybe remove?
int evas_engine_win; // NO GUI - maybe remove?
int evas_engine_zone; // NO GUI - maybe remove?
int use_composite; // NO GUI
const char *language; // GUI
Evas_List *modules; // GUI
Evas_List *font_fallbacks; // GUI

View File

@ -7592,3 +7592,43 @@ break;
END_INT;
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_USE_COMPOSITE_SET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-use-composite-set", 1, "Set whether composite should be used", 0, HDL)
#elif (TYPE == E_REMOTE_OUT)
REQ_INT(atoi(params[0]), HDL);
#elif (TYPE == E_WM_IN)
START_INT(val, HDL);
e_config->use_composite = val;
E_CONFIG_LIMIT(e_config->use_composite, 0, 1);
SAVE;
END_INT;
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_USE_COMPOSITE_GET
#if (TYPE == E_REMOTE_OPTIONS)
OP("-use-composite-get", 0, "Get whether composite should be used", 1, HDL)
#elif (TYPE == E_REMOTE_OUT)
REQ_NULL(HDL);
#elif (TYPE == E_WM_IN)
SEND_INT(e_config->use_composite, E_IPC_OP_USE_COMPOSITE_GET_REPLY, HDL);
#elif (TYPE == E_REMOTE_IN)
#endif
#undef HDL
/****************************************************************************/
#define HDL E_IPC_OP_USE_COMPOSITE_GET_REPLY
#if (TYPE == E_REMOTE_OPTIONS)
#elif (TYPE == E_REMOTE_OUT)
#elif (TYPE == E_WM_IN)
#elif (TYPE == E_REMOTE_IN)
START_INT(val, HDL);
printf("REPLY: %d\n", val);
END_INT;
#endif
#undef HDL

View File

@ -389,3 +389,7 @@
#define E_IPC_OP_EDGE_FLIP_DRAGGING_SET 360
#define E_IPC_OP_EDGE_FLIP_DRAGGING_GET 361
#define E_IPC_OP_EDGE_FLIP_DRAGGING_GET_REPLY 362
#define E_IPC_OP_USE_COMPOSITE_SET 363
#define E_IPC_OP_USE_COMPOSITE_GET 364
#define E_IPC_OP_USE_COMPOSITE_GET_REPLY 365

View File

@ -169,7 +169,14 @@ e_popup_edje_bg_object_set(E_Popup *pop, Evas_Object *o)
pop->shaped = 1;
else
pop->shaped = 0;
ecore_evas_shaped_set(pop->ecore_evas, pop->shaped);
if (e_config->use_composite)
{
ecore_evas_alpha_set(pop->ecore_evas, pop->shaped);
pop->evas_win = ecore_evas_software_x11_window_get(pop->ecore_evas);
e_container_window_raise(pop->zone->container, pop->evas_win, pop->layer);
}
else
ecore_evas_shaped_set(pop->ecore_evas, pop->shaped);
}
}