Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_border.c e_canvas.c e_canvas.h e_config.c e_config.h 
        e_container.c e_dnd.c e_error.c e_init.c e_menu.c e_popup.c 
        e_win.c e_zone.c 


Log Message:


1. centralise canvas creation.
2. allow xrender to be (*hard-coded) chosen.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.438
retrieving revision 1.439
diff -u -3 -r1.438 -r1.439
--- e_border.c  29 Sep 2005 15:01:04 -0000      1.438
+++ e_border.c  3 Oct 2005 07:36:22 -0000       1.439
@@ -226,23 +226,9 @@
    e_bindings_mouse_grab(E_BINDING_CONTEXT_BORDER, bd->win);
    e_bindings_wheel_grab(E_BINDING_CONTEXT_BORDER, bd->win);
    e_focus_setup(bd);
-   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);
-     }
+   bd->bg_ecore_evas = e_canvas_new(e_config->evas_engine_borders, bd->win,
+                                   0, 0, bd->w, bd->h, 1, 0,
+                                   &(bd->bg_win), &(bd->bg_subwin));
    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);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_canvas.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- e_canvas.c  7 May 2005 13:50:38 -0000       1.6
+++ e_canvas.c  3 Oct 2005 07:36:23 -0000       1.7
@@ -94,3 +94,46 @@
        evas_image_cache_reload(e);
      }
 }
+
+Ecore_Evas *
+e_canvas_new(int engine_hint, Ecore_X_Window win, int x, int y, int w, int h,
+            int direct_resize, int override, Ecore_X_Window *win_ret,
+            Ecore_X_Window *subwin_ret)
+{
+   Ecore_Evas *ee;
+   
+   if (e_canvas_engine_decide(engine_hint) == E_EVAS_ENGINE_GL_X11)
+     {
+       ee = ecore_evas_gl_x11_new(NULL, win, x, y, w, h);
+       if (ee)
+         {
+            ecore_evas_override_set(ee, override);
+            if (direct_resize) ecore_evas_gl_x11_direct_resize_set(ee, 1);
+            if (win_ret) *win_ret = ecore_evas_gl_x11_window_get(ee);
+            if (subwin_ret) *subwin_ret = ecore_evas_gl_x11_subwindow_get(ee);
+         }
+     }
+   else if (e_canvas_engine_decide(engine_hint) == E_EVAS_ENGINE_XRENDER_X11)
+     {
+       ee = ecore_evas_xrender_x11_new(NULL, win, x, y, w, h);
+       if (ee)
+         {
+            ecore_evas_override_set(ee, override);
+            if (direct_resize) ecore_evas_xrender_x11_direct_resize_set(ee, 1);
+            if (win_ret) *win_ret = ecore_evas_xrender_x11_window_get(ee);
+            if (subwin_ret) *subwin_ret = 
ecore_evas_xrender_x11_subwindow_get(ee);
+         }
+     }
+   else
+     {
+       ee = ecore_evas_software_x11_new(NULL, win, x, y, w, h);
+       if (ee)
+         {
+            ecore_evas_override_set(ee, override);
+            if (direct_resize) ecore_evas_software_x11_direct_resize_set(ee, 
1);
+            if (win_ret) *win_ret = ecore_evas_software_x11_window_get(ee);
+            if (subwin_ret) *subwin_ret = 
ecore_evas_software_x11_subwindow_get(ee);
+         }
+     }
+   return ee;
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_canvas.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- e_canvas.h  7 May 2005 13:50:38 -0000       1.5
+++ e_canvas.h  3 Oct 2005 07:36:23 -0000       1.6
@@ -6,12 +6,13 @@
 #ifndef E_CANVAS_H
 #define E_CANVAS_H
 
-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);
-    
+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);
+EAPI Ecore_Evas *e_canvas_new(int engine_hint, Ecore_X_Window win, int x, int 
y, int w, int h, int direct_resize, int override, Ecore_X_Window *win_ret, 
Ecore_X_Window *subwin_ret);
+
 #endif
 #endif
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_config.c,v
retrieving revision 1.106
retrieving revision 1.107
diff -u -3 -r1.106 -r1.107
--- e_config.c  27 Sep 2005 22:50:56 -0000      1.106
+++ e_config.c  3 Oct 2005 07:36:23 -0000       1.107
@@ -408,6 +408,8 @@
        e_config->evas_engine_errors = E_EVAS_ENGINE_DEFAULT;
        e_config->evas_engine_popups = E_EVAS_ENGINE_DEFAULT;
        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->language = strdup("");
        e_config->window_placement_policy = E_WINDOW_PLACEMENT_SMART;
        e_config->focus_policy = E_FOCUS_MOUSE;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_config.h,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -3 -r1.56 -r1.57
--- e_config.h  27 Sep 2005 22:50:56 -0000      1.56
+++ e_config.h  3 Oct 2005 07:36:23 -0000       1.57
@@ -55,6 +55,7 @@
 #define E_EVAS_ENGINE_DEFAULT      0
 #define E_EVAS_ENGINE_SOFTWARE_X11 1
 #define E_EVAS_ENGINE_GL_X11       2
+#define E_EVAS_ENGINE_XRENDER_X11  3
 
 struct _E_Config
 {
@@ -86,6 +87,8 @@
    int         evas_engine_errors;
    int         evas_engine_popups;
    int         evas_engine_drag;
+   int         evas_engine_win;
+   int         evas_engine_zone;
    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.88
retrieving revision 1.89
diff -u -3 -r1.88 -r1.89
--- e_container.c       28 Sep 2005 13:30:49 -0000      1.88
+++ e_container.c       3 Oct 2005 07:36:23 -0000       1.89
@@ -88,24 +88,12 @@
      {
        con->win = con->manager->win;
      }
-   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);
-     }
+   con->bg_ecore_evas = e_canvas_new(e_config->evas_engine_container, con->win,
+                                    0, 0, con->w, con->h, 1, 1,
+                                    &(con->bg_win), NULL);
+   e_canvas_add(con->bg_ecore_evas);
    con->event_win = ecore_x_window_input_new(con->bg_win, 0, 0, con->w, 
con->h);
    ecore_x_window_show(con->event_win);
-   e_canvas_add(con->bg_ecore_evas);
    con->bg_evas = ecore_evas_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");
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_dnd.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -3 -r1.30 -r1.31
--- e_dnd.c     5 Sep 2005 15:24:07 -0000       1.30
+++ e_dnd.c     3 Oct 2005 07:36:23 -0000       1.31
@@ -151,25 +151,9 @@
    drag->layer = 250;
    drag->container = container;
    e_object_ref(E_OBJECT(drag->container));
-   if (e_canvas_engine_decide(e_config->evas_engine_drag) ==
-       E_EVAS_ENGINE_GL_X11)
-     {
-       drag->ecore_evas = ecore_evas_gl_x11_new(NULL,
-                                                drag->container->win,
-                                                drag->x, drag->y,
-                                                drag->w, drag->h);
-       ecore_evas_gl_x11_direct_resize_set(drag->ecore_evas, 1);
-       drag->evas_win = ecore_evas_gl_x11_window_get(drag->ecore_evas);
-     }
-   else
-     {
-       drag->ecore_evas = ecore_evas_software_x11_new(NULL,
-                                                     drag->container->win,
-                                                     drag->x, drag->y,
-                                                     drag->w, drag->h);
-       ecore_evas_software_x11_direct_resize_set(drag->ecore_evas, 1);
-       drag->evas_win = ecore_evas_software_x11_window_get(drag->ecore_evas);
-     }
+   drag->ecore_evas = e_canvas_new(e_config->evas_engine_drag, 
drag->container->win,
+                                  drag->x, drag->y, drag->w, drag->h, 1, 1,
+                                  &(drag->evas_win), NULL);
    e_canvas_add(drag->ecore_evas);
    drag->shape = e_container_shape_add(drag->container);
    e_container_shape_move(drag->shape, drag->x, drag->y);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_error.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -3 -r1.28 -r1.29
--- e_error.c   20 Sep 2005 18:22:01 -0000      1.28
+++ e_error.c   3 Oct 2005 07:36:23 -0000       1.29
@@ -70,24 +70,12 @@
    error_h = 200;
    x = (man->w - error_w) / 2;
    y = (man->h - error_h) / 2;
-   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);
-     }
+   ee = e_canvas_new(e_config->evas_engine_errors, man->win,
+                    x, y, error_w, error_h, 1, 0,
+                    &win, NULL);
    e_canvas_add(ee);
+   ecore_evas_override_set(ee, 1);
+   e_container_window_raise(con, win, 999);
 
    ecore_evas_name_class_set(ee, "E", "Low_Level_Dialog");
    ecore_evas_title_set(ee, "Enlightenment: Low Level Dialog");
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_init.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -3 -r1.29 -r1.30
--- e_init.c    28 Sep 2005 13:30:49 -0000      1.29
+++ e_init.c    3 Oct 2005 07:36:23 -0000       1.30
@@ -42,21 +42,9 @@
    root = roots[0];
    
    ecore_x_window_size_get(root, &w, &h);
-   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_init_ecore_evas = e_canvas_new(e_config->evas_engine_init, root,
+                                    0, 0, w, h, 1, 1,
+                                    &(_e_init_win), NULL);
    e_canvas_add(_e_init_ecore_evas);
    _e_init_evas = ecore_evas_get(_e_init_ecore_evas);
    ecore_evas_name_class_set(_e_init_ecore_evas, "E", "Init_Window");
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_menu.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -3 -r1.40 -r1.41
--- e_menu.c    5 Sep 2005 15:24:07 -0000       1.40
+++ e_menu.c    3 Oct 2005 07:36:23 -0000       1.41
@@ -1157,23 +1157,9 @@
    
    if (m->realized) return;
    m->realized = 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);
-     }
+   m->ecore_evas = e_canvas_new(e_config->evas_engine_menus, 
m->zone->container->win,
+                               m->cur.x, m->cur.y, m->cur.w, m->cur.h, 1, 1,
+                               &(m->evas_win), NULL);
    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);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_popup.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_popup.c   22 Sep 2005 12:47:45 -0000      1.7
+++ e_popup.c   3 Oct 2005 07:36:23 -0000       1.8
@@ -57,27 +57,9 @@
    pop->w = w;
    pop->h = h;
    pop->layer = 250;
-   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);
-     }
+   pop->ecore_evas = e_canvas_new(e_config->evas_engine_popups, 
pop->zone->container->win,
+                                 pop->zone->x + pop->x, pop->zone->y + pop->y, 
pop->w, pop->h, 1, 1,
+                                 &(pop->evas_win), NULL);
    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);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_win.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- e_win.c     24 Sep 2005 09:04:39 -0000      1.6
+++ e_win.c     3 Oct 2005 07:36:23 -0000       1.7
@@ -43,24 +43,15 @@
    win->container = con;
    /* TODO: Maybe use an own config for windows? */
    win->engine = e_canvas_engine_decide(e_config->evas_engine_errors);
-   if (win->engine == E_EVAS_ENGINE_GL_X11)
-     {
-       win->ecore_evas = ecore_evas_gl_x11_new(NULL, con->manager->root,
-                                               0, 0, 1, 1);
-       win->evas_win = ecore_evas_gl_x11_window_get(win->ecore_evas);
-     }
-   else
-     {
-       win->ecore_evas = ecore_evas_software_x11_new(NULL, con->manager->root,
-                                                     0, 0, 1, 1);
-       win->evas_win = ecore_evas_software_x11_window_get(win->ecore_evas);
-     }
+   win->ecore_evas =  e_canvas_new(e_config->evas_engine_win, 
con->manager->root,
+                                  0, 0, 1, 1, 0, 0,
+                                  &(win->evas_win), NULL);
+   e_canvas_add(win->ecore_evas);
    ecore_evas_data_set(win->ecore_evas, "E_Win", win);
    ecore_evas_callback_move_set(win->ecore_evas, _e_win_cb_move);
    ecore_evas_callback_resize_set(win->ecore_evas, _e_win_cb_resize);
    ecore_evas_callback_delete_request_set(win->ecore_evas, _e_win_cb_delete);
    win->evas = ecore_evas_get(win->ecore_evas);
-   e_canvas_add(win->ecore_evas);
    ecore_evas_name_class_set(win->ecore_evas, "E", "_e_internal_window");
    ecore_evas_title_set(win->ecore_evas, "E");
    win->x = 0;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_zone.c,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -3 -r1.78 -r1.79
--- e_zone.c    29 Sep 2005 15:43:37 -0000      1.78
+++ e_zone.c    3 Oct 2005 07:36:23 -0000       1.79
@@ -106,13 +106,11 @@
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, 
_e_zone_cb_bg_mouse_move, zone);
 
    /* TODO: config the ecore_evas type. */
-   zone->black_ecore_evas = ecore_evas_software_x11_new(NULL, 
zone->container->win,
-                                                       0, 0, zone->w, zone->h);
-   ecore_evas_software_x11_direct_resize_set(zone->black_ecore_evas, 1);
-   ecore_evas_override_set(zone->black_ecore_evas, 1);
+   zone->black_ecore_evas = e_canvas_new(e_config->evas_engine_zone, 
zone->container->win,
+                                        0, 0, zone->w, zone->h, 1, 1,
+                                        &(zone->black_win), NULL);
+   e_canvas_add(zone->black_ecore_evas);
    ecore_evas_layer_set(zone->black_ecore_evas, 6);
-
-   zone->black_win = 
ecore_evas_software_x11_window_get(zone->black_ecore_evas);
    zone->black_evas = ecore_evas_get(zone->black_ecore_evas);
 
    o = evas_object_rectangle_add(zone->black_evas);
@@ -628,6 +626,11 @@
    Evas_List *l;
    int x, y;
 
+   if (zone->black_ecore_evas)
+     {
+       e_canvas_del(zone->black_ecore_evas);
+       ecore_evas_free(zone->black_ecore_evas);
+     }
    if (zone->cur_mouse_action)
      {
        e_object_unref(E_OBJECT(zone->cur_mouse_action));




-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to