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