Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_evas


Modified Files:
      Tag: SPLIT
        Ecore_Evas.h ecore_evas_private.h ecore_evas_x.c 


Log Message:


gl_x11 engine support in ecore_evas... just started.. should work though.

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Attic/Ecore_Evas.h,v
retrieving revision 1.1.2.19
retrieving revision 1.1.2.20
diff -u -3 -r1.1.2.19 -r1.1.2.20
--- Ecore_Evas.h        4 Sep 2003 21:07:49 -0000       1.1.2.19
+++ Ecore_Evas.h        4 Sep 2003 23:23:59 -0000       1.1.2.20
@@ -35,6 +35,7 @@
 
 /* engine/target specific init calls */
 Ecore_Evas     *ecore_evas_software_x11_new(const char *disp_name, Ecore_X_Window 
parent, int x, int y, int w, int h);
+Ecore_Evas     *ecore_evas_gl_x11_new(const char *disp_name, Ecore_X_Window parent, 
int x, int y, int w, int h);
 Ecore_X_Window  ecore_evas_software_x11_window_get(Ecore_Evas *ee);
 Ecore_Evas     *ecore_evas_fb_new(char *disp_name, int rotation, int w, int h);
 
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Attic/ecore_evas_private.h,v
retrieving revision 1.1.2.17
retrieving revision 1.1.2.18
diff -u -3 -r1.1.2.17 -r1.1.2.18
--- ecore_evas_private.h        16 Jul 2003 04:49:07 -0000      1.1.2.17
+++ ecore_evas_private.h        4 Sep 2003 23:23:59 -0000       1.1.2.18
@@ -8,7 +8,11 @@
 #ifdef BUILD_ECORE_X
 #include "Ecore_X.h"
 #include <Evas_Engine_Software_X11.h>
+#include <X11/Xlib.h>
 #include <X11/Xutil.h>
+#ifdef BUILD_ECORE_EVAS_GL
+#include <Evas_Engine_GL_X11.h>
+#endif
 #endif
 #ifdef BUILD_ECORE_FB
 #include <Evas_Engine_FB.h>
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Attic/ecore_evas_x.c,v
retrieving revision 1.1.2.19
retrieving revision 1.1.2.20
diff -u -3 -r1.1.2.19 -r1.1.2.20
--- ecore_evas_x.c      16 Jul 2003 04:49:07 -0000      1.1.2.19
+++ ecore_evas_x.c      4 Sep 2003 23:23:59 -0000       1.1.2.20
@@ -604,6 +604,7 @@
    int rot_dif;
    
    if (ee->rotation == rotation) return;   
+   if (!strcmp(ee->driver, "gl_x11")) return;
    einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
    if (!einfo) return;
    rot_dif = ee->rotation - rotation;
@@ -671,6 +672,7 @@
    if (((ee->shaped) && (shaped)) ||
        ((!ee->shaped) && (!shaped)))
      return;
+   if (!strcmp(ee->driver, "gl_x11")) return;
    ee->shaped = shaped;
    einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
    if (einfo)
@@ -947,6 +949,7 @@
    if (((ee->prop.avoid_damage) && (on)) ||
        ((!ee->prop.avoid_damage) && (!on)))
      return;
+   if (!strcmp(ee->driver, "gl_x11")) return;
    ee->prop.avoid_damage = on;   
    einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
    if (einfo)
@@ -1095,6 +1098,98 @@
        einfo->info.depth    = DefaultDepth(ecore_x_display_get(), 
DefaultScreen(ecore_x_display_get()));
        einfo->info.rotation = 0;
        einfo->info.debug    = 0;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+   evas_key_modifier_add(ee->evas, "Shift");
+   evas_key_modifier_add(ee->evas, "Control");
+   evas_key_modifier_add(ee->evas, "Alt");
+   evas_key_modifier_add(ee->evas, "Meta");
+   evas_key_modifier_add(ee->evas, "Hyper");
+   evas_key_modifier_add(ee->evas, "Super");
+   evas_key_lock_add(ee->evas, "Caps_Lock");
+   evas_key_lock_add(ee->evas, "Num_Lock");
+   evas_key_lock_add(ee->evas, "Scroll_Lock");
+
+   ecore_evases = _ecore_list_prepend(ecore_evases, ee);
+   return ee;
+#else
+   return NULL;
+#endif   
+}
+
+Ecore_Evas *
+ecore_evas_gl_x11_new(const char *disp_name, Ecore_X_Window parent, 
+                     int x, int y, int w, int h)
+{
+#ifdef BUILD_ECORE_EVAS_GL 
+   Evas_Engine_Info_GL_X11 *einfo;
+   Ecore_Evas *ee;
+   int rmethod;
+
+   rmethod = evas_render_method_lookup("gl_x11");
+   if (!rmethod) return NULL;
+   if (!ecore_x_init(disp_name)) return NULL;
+   ee = calloc(1, sizeof(Ecore_Evas));
+   if (!ee) return NULL;
+   
+   ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS);
+   
+   _ecore_evas_x_init();
+   
+   ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_x_engine_func;
+   
+   ee->driver = strdup("gl_x11");
+   if (disp_name) ee->name = strdup(disp_name);
+
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   ee->x = x;
+   ee->y = y;
+   ee->w = w;
+   ee->h = h;
+   
+   ee->prop.max.w = 32767;
+   ee->prop.max.h = 32767;
+   ee->prop.layer = 4;
+   
+   /* init evas here */
+   ee->evas = evas_new();
+   evas_output_method_set(ee->evas, rmethod);
+   evas_output_size_set(ee->evas, w, h);
+   evas_output_viewport_set(ee->evas, 0, 0, w, h);
+   
+   ee->engine.x.win_container = ecore_x_window_new(parent, x, y, w, h);
+   einfo = (Evas_Engine_Info_GL_X11 *)evas_engine_info_get(ee->evas);
+   if (einfo)
+     {
+       XSetWindowAttributes attr;
+       
+       attr.backing_store = NotUseful;
+       attr.colormap = einfo->func.best_colormap_get(ecore_x_display_get(), 
DefaultScreen(ecore_x_display_get()));
+       attr.border_pixel = 0;
+       attr.background_pixmap = None;
+       attr.event_mask =
+         ExposureMask | ButtonPressMask | ButtonReleaseMask | 
+         PointerMotionMask | StructureNotifyMask;
+       attr.bit_gravity = ForgetGravity;
+       
+       ee->engine.x.win = 
+         XCreateWindow(ecore_x_display_get(), 
+                       ee->engine.x.win_container,
+                       0, 0, 
+                       w, h, 0,
+                       einfo->func.best_depth_get(ecore_x_display_get(), 
DefaultScreen(ecore_x_display_get())),
+                       InputOutput,
+                       einfo->func.best_visual_get(ecore_x_display_get(), 
DefaultScreen(ecore_x_display_get())),
+                       CWBackingStore | CWColormap |
+                       CWBackPixmap | CWBorderPixel |
+                       CWBitGravity | CWEventMask,
+                       &attr);
+       einfo->info.display  = ecore_x_display_get();
+       einfo->info.visual   = einfo->func.best_visual_get(ecore_x_display_get(), 
DefaultScreen(ecore_x_display_get()));
+       einfo->info.colormap = einfo->func.best_colormap_get(ecore_x_display_get(), 
DefaultScreen(ecore_x_display_get()));
+       einfo->info.drawable = ee->engine.x.win;
+       einfo->info.depth    = einfo->func.best_depth_get(ecore_x_display_get(), 
DefaultScreen(ecore_x_display_get()));
        evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
      }
    evas_key_modifier_add(ee->evas, "Shift");




-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to