Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/ecore

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


Modified Files:
        ecore_evas_x.c 


Log Message:


fix shaped ecore_evas handling to be more efficient on resize and if we
combine it with obscures - those obscured areas at least start as empty :)

===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_x.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -3 -r1.36 -r1.37
--- ecore_evas_x.c      29 Apr 2005 19:36:18 -0000      1.36
+++ ecore_evas_x.c      3 May 2005 17:35:50 -0000       1.37
@@ -72,6 +72,33 @@
 }
 
 static void
+_ecore_evas_x_resize_shape(Ecore_Evas *ee)
+{
+   Evas_Engine_Info_Software_X11 *einfo;
+   
+   einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
+   if (einfo)
+     {
+       GC gc;
+       XGCValues gcv;
+       
+       if (ee->engine.x.mask) ecore_x_pixmap_del(ee->engine.x.mask);
+       ee->engine.x.mask = ecore_x_pixmap_new(ee->engine.x.win, ee->w, ee->h, 
1);
+       gcv.foreground = 0;
+       gc = XCreateGC(ecore_x_display_get(), ee->engine.x.mask,
+                      GCForeground,
+                      &gcv);
+       XFillRectangle(ecore_x_display_get(), ee->engine.x.mask, gc,
+                      0, 0, ee->w, ee->h);
+       XFreeGC(ecore_x_display_get(), gc);
+       einfo->info.mask = ee->engine.x.mask;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+       evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+     
+     }
+}
+
+static void
 _ecore_evas_modifier_locks_update(Ecore_Evas *ee, int modifiers)
 {
    if (modifiers & ECORE_X_MODIFIER_SHIFT)
@@ -379,8 +406,7 @@
          }
        if (ee->shaped)
          {
-            ecore_evas_shaped_set(ee, 0);
-            ecore_evas_shaped_set(ee, 1);
+            _ecore_evas_x_resize_shape(ee);
          }
        if ((ee->expecting_resize.w > 0) &&
            (ee->expecting_resize.h > 0))
@@ -685,8 +711,7 @@
               }
             if (ee->shaped)
               {
-                 ecore_evas_shaped_set(ee, 0);
-                 ecore_evas_shaped_set(ee, 1);
+                 _ecore_evas_x_resize_shape(ee);
               }
          }
      }
@@ -720,8 +745,7 @@
               }
             if (ee->shaped)
               {
-                 ecore_evas_shaped_set(ee, 0);
-                 ecore_evas_shaped_set(ee, 1);
+                 _ecore_evas_x_resize_shape(ee);
               }
          }
      }
@@ -809,7 +833,17 @@
      {
        if (ee->shaped)
          {
+            GC gc;
+            XGCValues gcv;
+            
             ee->engine.x.mask = ecore_x_pixmap_new(ee->engine.x.win, ee->w, 
ee->h, 1);
+            gcv.foreground = 0;
+            gc = XCreateGC(ecore_x_display_get(), ee->engine.x.mask, 
+                           GCForeground,
+                           &gcv);
+            XFillRectangle(ecore_x_display_get(), ee->engine.x.mask, gc,
+                           0, 0, ee->w, ee->h);
+            XFreeGC(ecore_x_display_get(), gc);
             einfo->info.mask = ee->engine.x.mask;
             evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
             evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
@@ -1113,8 +1147,7 @@
      }
    if (ee->shaped)
      {
-       ecore_evas_shaped_set(ee, 0);
-       ecore_evas_shaped_set(ee, 1);
+       _ecore_evas_x_resize_shape(ee);
      }
    if ((ee->expecting_resize.w > 0) &&
        (ee->expecting_resize.h > 0))




-------------------------------------------------------
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

Reply via email to