Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_border.c e_border.h e_canvas.c e_canvas.h e_config.c e_config.h e_container.c e_error.c e_init.c e_main.c e_menu.c e_popup.c e_theme.c Log Message: properly virtualize ecore_evas setup =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.179 retrieving revision 1.180 diff -u -3 -r1.179 -r1.180 --- e_border.c 6 May 2005 08:33:50 -0000 1.179 +++ e_border.c 7 May 2005 13:50:37 -0000 1.180 @@ -142,8 +142,8 @@ ecore_x_window_gravity_set(bd->bg_win, grav); \ ecore_x_window_gravity_set(bd->client.shell_win, grav); \ ecore_x_window_gravity_set(bd->client.win, grav); \ -ecore_x_window_gravity_set(ecore_evas_software_x11_subwindow_get(bd->bg_ecore_evas), grav); \ -ecore_x_window_pixel_gravity_set(ecore_evas_software_x11_subwindow_get(bd->bg_ecore_evas), grav); +ecore_x_window_gravity_set(bd->bg_subwin, grav); \ +ecore_x_window_pixel_gravity_set(bd->bg_subwin, grav); /* externally accessible functions */ int @@ -222,12 +222,26 @@ bd->win = ecore_x_window_override_new(bd->container->win, 0, 0, bd->w, bd->h); ecore_x_window_shape_events_select(bd->win, 1); e_bindings_mouse_grab(E_BINDING_CONTEXT_BORDER, bd->win); - bd->bg_ecore_evas = ecore_evas_software_x11_new(NULL, bd->win, 0, 0, bd->w, bd->h); - ecore_evas_software_x11_direct_resize_set(bd->bg_ecore_evas, 1); + if (e_canvas_engine_decide(e_config->evas_engine_borders) == + E_EVAS_ENGINE_GL_X11) + { + bd->bg_ecore_evas = ecore_evas_gl_x11_new(NULL, bd->win, + 0, 0, bd->w, bd->h); + ecore_evas_gl_x11_direct_resize_set(bd->bg_ecore_evas, 1); + bd->bg_win = ecore_evas_gl_x11_window_get(bd->bg_ecore_evas); + bd->bg_subwin = ecore_evas_gl_x11_subwindow_get(bd->bg_ecore_evas); + } + else + { + bd->bg_ecore_evas = ecore_evas_software_x11_new(NULL, bd->win, + 0, 0, bd->w, bd->h); + ecore_evas_software_x11_direct_resize_set(bd->bg_ecore_evas, 1); + bd->bg_win = ecore_evas_software_x11_window_get(bd->bg_ecore_evas); + bd->bg_subwin = ecore_evas_software_x11_subwindow_get(bd->bg_ecore_evas); + } e_canvas_add(bd->bg_ecore_evas); bd->event_win = ecore_x_window_input_new(bd->win, 0, 0, bd->w, bd->h); bd->bg_evas = ecore_evas_get(bd->bg_ecore_evas); - bd->bg_win = ecore_evas_software_x11_window_get(bd->bg_ecore_evas); ecore_x_window_shape_events_select(bd->bg_win, 1); ecore_evas_name_class_set(bd->bg_ecore_evas, "E", "Frame_Window"); ecore_evas_title_set(bd->bg_ecore_evas, "Enlightenment Frame"); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v retrieving revision 1.43 retrieving revision 1.44 diff -u -3 -r1.43 -r1.44 --- e_border.h 5 May 2005 06:45:47 -0000 1.43 +++ e_border.h 7 May 2005 13:50:37 -0000 1.44 @@ -77,6 +77,7 @@ Ecore_Evas *bg_ecore_evas; Evas *bg_evas; Ecore_X_Window bg_win; + Ecore_X_Window bg_subwin; Evas_Object *bg_object; Evas_Object *icon_object; Ecore_X_Window event_win; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_canvas.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- e_canvas.c 11 Mar 2005 11:05:52 -0000 1.5 +++ e_canvas.c 7 May 2005 13:50:38 -0000 1.6 @@ -29,6 +29,22 @@ _e_canvases = evas_list_remove(_e_canvases, ee); } +int +e_canvas_engine_decide(int engine) +{ + /* if use default - use it */ + if (engine == E_EVAS_ENGINE_DEFAULT) + engine = e_config->evas_engine_default; + /* if engine is gl - do we support it? */ + if (engine == E_EVAS_ENGINE_GL_X11) + { + /* if we dont - fall back to software x11 */ + if (!ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_GL_X11)) + engine = E_EVAS_ENGINE_SOFTWARE_X11; + } + return engine; +} + void e_canvas_recache(void) { =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_canvas.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- e_canvas.h 7 Feb 2005 13:51:09 -0000 1.4 +++ e_canvas.h 7 May 2005 13:50:38 -0000 1.5 @@ -8,6 +8,7 @@ EAPI void e_canvas_add(Ecore_Evas *ee); EAPI void e_canvas_del(Ecore_Evas *ee); +EAPI int e_canvas_engine_decide(int engine); EAPI void e_canvas_recache(void); EAPI void e_canvas_cache_flush(void); EAPI void e_canvas_cache_reload(void); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_config.c,v retrieving revision 1.38 retrieving revision 1.39 diff -u -3 -r1.38 -r1.39 --- e_config.c 5 May 2005 08:33:17 -0000 1.38 +++ e_config.c 7 May 2005 13:50:38 -0000 1.39 @@ -135,6 +135,13 @@ e_config->zone_desks_x_count = 4; e_config->zone_desks_y_count = 1; e_config->use_virtual_roots = 0; + e_config->evas_engine_default = E_EVAS_ENGINE_SOFTWARE_X11; + e_config->evas_engine_container = E_EVAS_ENGINE_DEFAULT; + e_config->evas_engine_init = E_EVAS_ENGINE_DEFAULT; + e_config->evas_engine_menus = E_EVAS_ENGINE_DEFAULT; + e_config->evas_engine_borders = E_EVAS_ENGINE_DEFAULT; + e_config->evas_engine_errors = E_EVAS_ENGINE_DEFAULT; + e_config->evas_engine_popups = E_EVAS_ENGINE_DEFAULT; e_config->language = strdup(""); { E_Config_Module *em; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_config.h,v retrieving revision 1.17 retrieving revision 1.18 diff -u -3 -r1.17 -r1.18 --- e_config.h 5 May 2005 06:45:47 -0000 1.17 +++ e_config.h 7 May 2005 13:50:38 -0000 1.18 @@ -42,6 +42,10 @@ #ifndef E_CONFIG_H #define E_CONFIG_H +#define E_EVAS_ENGINE_DEFAULT 0 +#define E_EVAS_ENGINE_SOFTWARE_X11 1 +#define E_EVAS_ENGINE_GL_X11 2 + struct _E_Config { char *desktop_default_background; @@ -57,6 +61,13 @@ int zone_desks_x_count; int zone_desks_y_count; int use_virtual_roots; + int evas_engine_default; + int evas_engine_container; + int evas_engine_init; + int evas_engine_menus; + int evas_engine_borders; + int evas_engine_errors; + int evas_engine_popups; char *language; Evas_List *modules; Evas_List *font_fallbacks; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_container.c,v retrieving revision 1.44 retrieving revision 1.45 diff -u -3 -r1.44 -r1.45 --- e_container.c 4 May 2005 06:41:40 -0000 1.44 +++ e_container.c 7 May 2005 13:50:38 -0000 1.45 @@ -73,12 +73,23 @@ { con->win = con->manager->win; } - con->bg_ecore_evas = ecore_evas_software_x11_new(NULL, con->win, 0, 0, con->w, con->h); - ecore_evas_override_set(con->bg_ecore_evas, 1); - ecore_evas_software_x11_direct_resize_set(con->bg_ecore_evas, 1); + if (e_canvas_engine_decide(e_config->evas_engine_container) == + E_EVAS_ENGINE_GL_X11) + { + con->bg_ecore_evas = ecore_evas_gl_x11_new(NULL, con->win, 0, 0, con->w, con->h); + ecore_evas_gl_x11_direct_resize_set(con->bg_ecore_evas, 1); + ecore_evas_override_set(con->bg_ecore_evas, 1); + con->bg_win = ecore_evas_gl_x11_window_get(con->bg_ecore_evas); + } + else + { + con->bg_ecore_evas = ecore_evas_software_x11_new(NULL, con->win, 0, 0, con->w, con->h); + ecore_evas_software_x11_direct_resize_set(con->bg_ecore_evas, 1); + ecore_evas_override_set(con->bg_ecore_evas, 1); + con->bg_win = ecore_evas_software_x11_window_get(con->bg_ecore_evas); + } e_canvas_add(con->bg_ecore_evas); con->bg_evas = ecore_evas_get(con->bg_ecore_evas); - con->bg_win = ecore_evas_software_x11_window_get(con->bg_ecore_evas); ecore_evas_name_class_set(con->bg_ecore_evas, "E", "Background_Window"); ecore_evas_title_set(con->bg_ecore_evas, "Enlightenment Background"); ecore_evas_avoid_damage_set(con->bg_ecore_evas, 1); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_error.c,v retrieving revision 1.19 retrieving revision 1.20 diff -u -3 -r1.19 -r1.20 --- e_error.c 29 Apr 2005 11:26:42 -0000 1.19 +++ e_error.c 7 May 2005 13:50:38 -0000 1.20 @@ -60,15 +60,30 @@ Evas_List *l, *shapelist = NULL; Evas_Coord maxw, maxh; E_Container *con; + Ecore_X_Window win; int x, y; error_w = 400; error_h = 200; x = (man->w - error_w) / 2; y = (man->h - error_h) / 2; - ee = ecore_evas_software_x11_new(NULL, man->win, x, y, error_w, error_h); - ecore_evas_override_set(ee, 1); - ecore_evas_software_x11_direct_resize_set(ee, 1); + if (e_canvas_engine_decide(e_config->evas_engine_errors) == + E_EVAS_ENGINE_GL_X11) + { + ee = ecore_evas_gl_x11_new(NULL, man->win, x, y, error_w, error_h); + ecore_evas_gl_x11_direct_resize_set(ee, 1); + ecore_evas_override_set(ee, 1); + win = ecore_evas_gl_x11_window_get(ee); + e_container_window_raise(con, win, 999); + } + else + { + ee = ecore_evas_software_x11_new(NULL, man->win, x, y, error_w, error_h); + ecore_evas_software_x11_direct_resize_set(ee, 1); + ecore_evas_override_set(ee, 1); + win = ecore_evas_software_x11_window_get(ee); + e_container_window_raise(con, win, 999); + } e_canvas_add(ee); ecore_evas_name_class_set(ee, "E", "Low_Level_Dialog"); @@ -330,13 +345,7 @@ o = evas_object_rectangle_add(e); evas_object_name_set(o, "allocated"); } - { - Ecore_X_Window win; - - win = ecore_evas_software_x11_window_get(ee); - e_container_window_raise(con, win, 999); - ecore_evas_show(ee); - } + ecore_evas_show(ee); } /* local subsystem functions */ =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_init.c,v retrieving revision 1.19 retrieving revision 1.20 diff -u -3 -r1.19 -r1.20 --- e_init.c 25 Apr 2005 08:29:53 -0000 1.19 +++ e_init.c 7 May 2005 13:50:38 -0000 1.20 @@ -38,12 +38,23 @@ root = roots[0]; ecore_x_window_size_get(root, &w, &h); - _e_init_ecore_evas = ecore_evas_software_x11_new(NULL, root, 0, 0, w, h); - ecore_evas_override_set(_e_init_ecore_evas, 1); - ecore_evas_software_x11_direct_resize_set(_e_init_ecore_evas, 1); + if (e_canvas_engine_decide(e_config->evas_engine_init) == + E_EVAS_ENGINE_GL_X11) + { + _e_init_ecore_evas = ecore_evas_gl_x11_new(NULL, root, 0, 0, w, h); + ecore_evas_gl_x11_direct_resize_set(_e_init_ecore_evas, 1); + ecore_evas_override_set(_e_init_ecore_evas, 1); + _e_init_win = ecore_evas_gl_x11_window_get(_e_init_ecore_evas); + } + else + { + _e_init_ecore_evas = ecore_evas_software_x11_new(NULL, root, 0, 0, w, h); + ecore_evas_software_x11_direct_resize_set(_e_init_ecore_evas, 1); + ecore_evas_override_set(_e_init_ecore_evas, 1); + _e_init_win = ecore_evas_software_x11_window_get(_e_init_ecore_evas); + } e_canvas_add(_e_init_ecore_evas); _e_init_evas = ecore_evas_get(_e_init_ecore_evas); - _e_init_win = ecore_evas_software_x11_window_get(_e_init_ecore_evas); ecore_evas_name_class_set(_e_init_ecore_evas, "E", "Init_Window"); ecore_evas_title_set(_e_init_ecore_evas, "Enlightenment Init"); e_pointer_ecore_evas_set(_e_init_ecore_evas); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_main.c,v retrieving revision 1.74 retrieving revision 1.75 diff -u -3 -r1.74 -r1.75 --- e_main.c 7 May 2005 04:34:25 -0000 1.74 +++ e_main.c 7 May 2005 13:50:38 -0000 1.75 @@ -190,7 +190,7 @@ } _e_main_shutdown_push(e_xinerama_shutdown); - ecore_x_grab(); +// ecore_x_grab(); ecore_x_io_error_handler_set(_e_main_cb_x_fatal, NULL); @@ -378,7 +378,7 @@ e_managers_keys_grab(); - ecore_x_ungrab(); +// ecore_x_ungrab(); e_init_title_set(_("Enlightenment")); e_init_version_set(VERSION); @@ -491,7 +491,7 @@ static int _e_main_x_shutdown(void) { - ecore_x_ungrab(); +// ecore_x_ungrab(); ecore_x_focus_reset(); ecore_x_events_allow_all(); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_menu.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -3 -r1.27 -r1.28 --- e_menu.c 7 May 2005 04:34:26 -0000 1.27 +++ e_menu.c 7 May 2005 13:50:38 -0000 1.28 @@ -1021,10 +1021,23 @@ if (m->realized) return; m->realized = 1; - m->ecore_evas = ecore_evas_software_x11_new(NULL, m->zone->container->win, - m->cur.x, m->cur.y, - m->cur.w, m->cur.h); - ecore_evas_software_x11_direct_resize_set(m->ecore_evas, 1); + if (e_canvas_engine_decide(e_config->evas_engine_menus) == + E_EVAS_ENGINE_GL_X11) + { + m->ecore_evas = ecore_evas_gl_x11_new(NULL, m->zone->container->win, + m->cur.x, m->cur.y, + m->cur.w, m->cur.h); + ecore_evas_gl_x11_direct_resize_set(m->ecore_evas, 1); + m->evas_win = ecore_evas_gl_x11_window_get(m->ecore_evas); + } + else + { + m->ecore_evas = ecore_evas_software_x11_new(NULL, m->zone->container->win, + m->cur.x, m->cur.y, + m->cur.w, m->cur.h); + ecore_evas_software_x11_direct_resize_set(m->ecore_evas, 1); + m->evas_win = ecore_evas_software_x11_window_get(m->ecore_evas); + } e_canvas_add(m->ecore_evas); m->shape = e_container_shape_add(m->zone->container); e_container_shape_move(m->shape, m->cur.x, m->cur.y); @@ -1035,7 +1048,6 @@ /* move cursor out to avoid event cycles during setup */ evas_event_feed_mouse_in(m->evas, NULL); evas_event_feed_mouse_move(m->evas, -1000000, -1000000, NULL); - m->evas_win = ecore_evas_software_x11_window_get(m->ecore_evas); ecore_x_window_shape_events_select(m->evas_win, 1); ecore_evas_name_class_set(m->ecore_evas, "E", "_e_menu_window"); ecore_evas_title_set(m->ecore_evas, "E Menu"); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_popup.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e_popup.c 7 May 2005 04:34:26 -0000 1.1 +++ e_popup.c 7 May 2005 13:50:38 -0000 1.2 @@ -40,18 +40,32 @@ pop->w = w; pop->h = h; pop->layer = 250; - pop->ecore_evas = ecore_evas_software_x11_new(NULL, - pop->zone->container->win, - pop->zone->x + pop->x, - pop->zone->y + pop->y, - pop->w, pop->h); - ecore_evas_software_x11_direct_resize_set(pop->ecore_evas, 1); + if (e_canvas_engine_decide(e_config->evas_engine_popups) == + E_EVAS_ENGINE_GL_X11) + { + pop->ecore_evas = ecore_evas_gl_x11_new(NULL, + pop->zone->container->win, + pop->zone->x + pop->x, + pop->zone->y + pop->y, + pop->w, pop->h); + ecore_evas_gl_x11_direct_resize_set(pop->ecore_evas, 1); + pop->evas_win = ecore_evas_gl_x11_window_get(pop->ecore_evas); + } + else + { + pop->ecore_evas = ecore_evas_software_x11_new(NULL, + pop->zone->container->win, + pop->zone->x + pop->x, + pop->zone->y + pop->y, + pop->w, pop->h); + ecore_evas_software_x11_direct_resize_set(pop->ecore_evas, 1); + pop->evas_win = ecore_evas_software_x11_window_get(pop->ecore_evas); + } e_canvas_add(pop->ecore_evas); pop->shape = e_container_shape_add(pop->zone->container); e_container_shape_move(pop->shape, pop->zone->x + pop->x, pop->zone->y + pop->y); e_container_shape_resize(pop->shape, pop->w, pop->h); pop->evas = ecore_evas_get(pop->ecore_evas); - pop->evas_win = ecore_evas_software_x11_window_get(pop->ecore_evas); e_container_window_raise(pop->zone->container, pop->evas_win, pop->layer); ecore_x_window_shape_events_select(pop->evas_win, 1); ecore_evas_name_class_set(pop->ecore_evas, "E", "_e_popup_window"); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_theme.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- e_theme.c 3 May 2005 15:25:02 -0000 1.7 +++ e_theme.c 7 May 2005 13:50:38 -0000 1.8 @@ -40,6 +40,13 @@ e_theme_file_set(buf, et->file); } /* + * this is used to sewt the theme for a CATEGORY of e17. "base" is always set + * to the default theme - because if a selected theme for lest say base/theme + * does not provide theme elements it can default back to the default theme. + * + * the idea is you can actually set a different theme for different parts of + * the desktop... :) + * * other possible categories... * e_theme_file_set("base/theme/borders", "default.edj"); * e_theme_file_set("base/theme/menus", "default.edj"); @@ -236,6 +243,16 @@ mappings = evas_hash_add(mappings, category, res); } +void +e_theme_about(E_Zone *zone, const char *file) +{ + static E_Popup *pop = NULL; + + if (pop) return; + pop = e_popup_new(zone, zone->w / 2, zone->h / 2, 1, 1); + e_popup_show(pop); +} + /* local subsystem functions */ static Evas_Bool ------------------------------------------------------- This SF.Net email is sponsored by: NEC IT Guy Games. Get your fingers limbered up and give it your best shot. 4 great events, 4 opportunities to win big! Highest score wins.NEC IT Guy Games. Play to win an NEC 61 plasma display. Visit http://www.necitguy.com/?r=20 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs