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.c ecore_evas_private.h 


Log Message:


optimize this.... BIATCH!

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Attic/Ecore_Evas.h,v
retrieving revision 1.1.2.8
retrieving revision 1.1.2.9
diff -u -3 -r1.1.2.8 -r1.1.2.9
--- Ecore_Evas.h        9 Feb 2003 00:41:46 -0000       1.1.2.8
+++ Ecore_Evas.h        9 Feb 2003 02:27:49 -0000       1.1.2.9
@@ -27,7 +27,7 @@
    void        ecore_evas_callback_delete_request_set(Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
    void        ecore_evas_callback_destroy_set(Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
    void        ecore_evas_callback_focus_in_set(Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
-   void        fecore_evas_callback_focus_out_set(Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
+   void        ecore_evas_callback_focus_out_set(Ecore_Evas *ee, void (*func) 
+(Ecore_Evas *ee));
    void        ecore_evas_callback_mouse_in_set(Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
    void        ecore_evas_callback_mouse_out_set(Ecore_Evas *ee, void (*func) 
(Ecore_Evas *ee));
    Evas       *ecore_evas_get(Ecore_Evas *ee);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Attic/ecore_evas.c,v
retrieving revision 1.1.2.8
retrieving revision 1.1.2.9
diff -u -3 -r1.1.2.8 -r1.1.2.9
--- ecore_evas.c        9 Feb 2003 00:41:46 -0000       1.1.2.8
+++ ecore_evas.c        9 Feb 2003 02:27:50 -0000       1.1.2.9
@@ -227,8 +227,18 @@
    if (!ee) return 1; /* pass on event */
    if (ee->prop.avoid_damage)
      {
-       ecore_x_pixmap_paste(ee->x11.pmap, ee->x11.win, ee->x11.gc, 
-                            e->x, e->y, e->w, e->h, e->x, e->y);
+       XRectangle xr;
+       Region tmpr;
+       
+       if (!ee->x11.damages) ee->x11.damages = XCreateRegion();
+       tmpr = XCreateRegion();
+       xr.x = e->x;
+       xr.y = e->y;
+       xr.width = e->w;
+       xr.height = e->h;
+       XUnionRectWithRegion(&xr, ee->x11.damages, tmpr);
+       XDestroyRegion(ee->x11.damages);
+       ee->x11.damages = tmpr;
      }
    else
      evas_damage_rectangle_add(ee->evas, e->x, e->y, e->w, e->h);
@@ -349,14 +359,27 @@
             Evas_List *updates, *l;
             
             updates = evas_render_updates(ee->evas);
+            if (!ee->x11.damages) ee->x11.damages = XCreateRegion();
             for (l = updates; l; l = l->next)
               {
                  Evas_Rectangle *r;
+                 XRectangle xr;
+                 Region tmpr;
                  
                  r = l->data;
-                 ecore_x_pixmap_paste(ee->x11.pmap, ee->x11.win, ee->x11.gc,
-                                      r->x, r->y, r->w, r->h, r->x, r->y);
+                 tmpr = XCreateRegion();
+                 xr.x = r->x;
+                 xr.y = r->y;
+                 xr.width = r->w;
+                 xr.height = r->h;
+                 XUnionRectWithRegion(&xr, ee->x11.damages, tmpr);
+                 ee->x11.damages = tmpr;
               }
+            XSetRegion(ecore_x_display_get(), ee->x11.gc, ee->x11.damages);
+            ecore_x_pixmap_paste(ee->x11.pmap, ee->x11.win, ee->x11.gc,
+                                 0, 0, ee->w, ee->h, 0, 0);
+            XDestroyRegion(ee->x11.damages);
+            ee->x11.damages = 0;
             if ((ee->shaped) && (updates))
               {
                  if (ee->prop.fullscreen)
@@ -399,6 +422,7 @@
    if (ee->x11.pmap) ecore_x_pixmap_del(ee->x11.pmap);
    if (ee->x11.mask) ecore_x_pixmap_del(ee->x11.mask);
    if (ee->x11.gc) ecore_x_gc_del(ee->x11.gc);
+   if (ee->x11.damages) XDestroyRegion(ee->x11.damages);
 }
 
 /**
@@ -659,7 +683,6 @@
        else
          {
             if (ee->x11.mask) ecore_x_pixmap_del(ee->x11.mask);
-            if (ee->x11.gcm) ecore_x_gc_del(ee->x11.gcm);
             ee->x11.mask = 0;
             einfo->info.mask = 0;
             evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Attic/ecore_evas_private.h,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -u -3 -r1.1.2.6 -r1.1.2.7
--- ecore_evas_private.h        9 Feb 2003 00:41:46 -0000       1.1.2.6
+++ ecore_evas_private.h        9 Feb 2003 02:27:50 -0000       1.1.2.7
@@ -3,6 +3,7 @@
 
 #include <Evas.h>
 #include <Evas_Engine_Software_X11.h>
+#include <X11/Xutil.h>
 
 typedef struct _Ecore_Evas Ecore_Evas;
 
@@ -66,7 +67,7 @@
       Pixmap         pmap;
       Pixmap         mask;
       GC             gc;
-      GC             gcm;
+      Region         damages;
    } x11;
 };
 




-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to