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


Log Message:


ecore_evas is almost complete... :)

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Attic/Ecore_Evas.h,v
retrieving revision 1.1.2.7
retrieving revision 1.1.2.8
diff -u -3 -r1.1.2.7 -r1.1.2.8
--- Ecore_Evas.h        8 Feb 2003 07:03:41 -0000       1.1.2.7
+++ Ecore_Evas.h        9 Feb 2003 00:41:46 -0000       1.1.2.8
@@ -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        ecore_evas_callback_focus_out_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_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);
@@ -37,8 +37,8 @@
    void        ecore_evas_geometry_get(Ecore_Evas *ee, int *x, int *y, int *w, int 
*h);
    void ecore_evas_rotation_set(Ecore_Evas *ee, int rot);
    int  ecore_evas_rotation_get(Ecore_Evas *ee);
-   void ecore_evas_shaped_set(Ecore_Evas *ee, int shaped);
-   int  ecore_evas_shaped_get(Ecore_Evas *ee);
+   void        ecore_evas_shaped_set(Ecore_Evas *ee, int shaped);
+   int         ecore_evas_shaped_get(Ecore_Evas *ee);
    void        ecore_evas_show(Ecore_Evas *ee);
    void        ecore_evas_hide(Ecore_Evas *ee);   
    int         ecore_evas_visibility_get(Ecore_Evas *ee);
@@ -63,17 +63,17 @@
    void        ecore_evas_focus_set(Ecore_Evas *ee, int on);
    int         ecore_evas_focus_get(Ecore_Evas *ee);
    void ecore_evas_iconified_set(Ecore_Evas *ee, int on);
-   int ecore_evas_iconified_get(Ecore_Evas *ee);
+   int  ecore_evas_iconified_get(Ecore_Evas *ee);
    void        ecore_evas_borderless_set(Ecore_Evas *ee, int on);
    int         ecore_evas_borderless_get(Ecore_Evas *ee);
    void        ecore_evas_override_set(Ecore_Evas *ee, int on);
    int         ecore_evas_override_get(Ecore_Evas *ee);
    void ecore_evas_maximized_set(Ecore_Evas *ee, int on);
-   int ecore_evas_maximized_get(Ecore_Evas *ee);
+   int  ecore_evas_maximized_get(Ecore_Evas *ee);
    void        ecore_evas_fullscreen_set(Ecore_Evas *ee, int on);
    int         ecore_evas_fullscreen_get(Ecore_Evas *ee);
-   void ecore_evas_avoid_damage_set(Ecore_Evas *ee, int on);
-   int ecore_evas_avoid_damage_get(Ecore_Evas *ee);
+   void        ecore_evas_avoid_damage_set(Ecore_Evas *ee, int on);
+   int         ecore_evas_avoid_damage_get(Ecore_Evas *ee);
    
 #ifdef __cplusplus
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Attic/Makefile.am,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -3 -r1.1.2.3 -r1.1.2.4
--- Makefile.am 8 Feb 2003 01:30:57 -0000       1.1.2.3
+++ Makefile.am 9 Feb 2003 00:41:46 -0000       1.1.2.4
@@ -13,5 +13,13 @@
 ecore_evas.c \
 ecore_evas_private.h
 
-libecore_evas_la_LIBADD = @evas_libs@
+libecore_evas_la_LIBADD = $(LDFLAGS) \
+$(top_builddir)/src/lib/ecore_x/libecore_x.la \
+$(top_builddir)/src/lib/ecore/libecore.la \
+@evas_libs@
+
 libecore_evas_la_LDFLAGS = -version-info 1:0:0
+
+libecore_evas_la_DEPENDENCIES = \
+$(top_builddir)/src/lib/ecore_x/libecore_x.la \
+$(top_builddir)/src/lib/ecore/libecore.la
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/Attic/ecore_evas.c,v
retrieving revision 1.1.2.7
retrieving revision 1.1.2.8
diff -u -3 -r1.1.2.7 -r1.1.2.8
--- ecore_evas.c        8 Feb 2003 07:03:41 -0000       1.1.2.7
+++ ecore_evas.c        9 Feb 2003 00:41:46 -0000       1.1.2.8
@@ -225,7 +225,13 @@
    e = event;
    ee = _ecore_evas_software_x11_match(e->win);
    if (!ee) return 1; /* pass on event */
-   evas_damage_rectangle_add(ee->evas, e->x, e->y, e->w, e->h);
+   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);
+     }
+   else
+     evas_damage_rectangle_add(ee->evas, e->x, e->y, e->w, e->h);
    return 0; /* dont pass it on */
 }
 
@@ -270,6 +276,16 @@
          ecore_x_window_resize(ee->x11.win, ee->w, ee->h);
        evas_output_size_set(ee->evas, ee->w, ee->h);
        evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+       if (ee->prop.avoid_damage)
+         {
+            ecore_evas_avoid_damage_set(ee, 0);
+            ecore_evas_avoid_damage_set(ee, 1);
+         }
+       if (ee->shaped)
+         {
+            ecore_evas_shaped_set(ee, 0);
+            ecore_evas_shaped_set(ee, 1);
+         }
        if (ee->func.fn_resize) ee->func.fn_resize(ee); 
      }
    return 0; /* dont pass it on */
@@ -328,7 +344,47 @@
        Ecore_Evas *ee;
        
        ee = (Ecore_Evas *)l;
-       evas_render(ee->evas);
+       if (ee->prop.avoid_damage)
+         {
+            Evas_List *updates, *l;
+            
+            updates = evas_render_updates(ee->evas);
+            for (l = updates; l; l = l->next)
+              {
+                 Evas_Rectangle *r;
+                 
+                 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);
+              }
+            if ((ee->shaped) && (updates))
+              {
+                 if (ee->prop.fullscreen)
+                   ecore_x_window_shape_mask_set(ee->x11.win, ee->x11.mask);
+                 else
+                   ecore_x_window_shape_mask_set(ee->x11.win_container, ee->x11.mask);
+              }
+            if (updates) evas_render_updates_free(updates);
+         }
+       else if (ee->visible)
+         {
+            if (ee->shaped)
+              {
+                 Evas_List *updates;
+                 
+                 updates = evas_render_updates(ee->evas);
+                 if (updates)
+                   {
+                      if (ee->prop.fullscreen)
+                        ecore_x_window_shape_mask_set(ee->x11.win, ee->x11.mask);
+                      else
+                        ecore_x_window_shape_mask_set(ee->x11.win_container, 
+ee->x11.mask);
+                      evas_render_updates_free(updates);
+                   }
+              }
+            else
+              evas_render(ee->evas);
+         }
      }
    ecore_x_flush();
    return 1;
@@ -340,6 +396,9 @@
    ecore_x_shutdown();
    ecore_x_window_del(ee->x11.win);
    ecore_x_window_del(ee->x11.win_container);
+   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);
 }
 
 /**
@@ -467,8 +526,8 @@
    if (ee->prop.clas) free(ee->prop.clas);
    if (ee->prop.cursor.file) free(ee->prop.cursor.file);
    if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object);
+   if (ee->evas) evas_free(ee->evas);
    if (ee->func.fn_free) ee->func.fn_free(ee);
-   if (ee->evas); evas_free(ee->evas);
    ecore_evases = _ecore_list_remove(ecore_evases, ee);   
    free(ee);
 }
@@ -581,6 +640,33 @@
 void
 ecore_evas_shaped_set(Ecore_Evas *ee, int shaped)
 {
+   Evas_Engine_Info_Software_X11 *einfo;
+   
+   if (((ee->shaped) && (shaped)) ||
+       ((!ee->shaped) && (!shaped)))
+     return;
+   ee->shaped = shaped;
+   einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
+   if (einfo)
+     {
+       if (ee->shaped)
+         {
+            ee->x11.mask = ecore_x_pixmap_new(ee->x11.win, ee->w, ee->h, 1);
+            einfo->info.mask = ee->x11.mask;
+            evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+            evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+         }
+       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);
+            ecore_x_window_shape_mask_set(ee->x11.win, 0);
+            ecore_x_window_shape_mask_set(ee->x11.win_container, 0);
+         }
+     }
 }
 
 int
@@ -890,6 +976,7 @@
        ecore_x_window_raise(ee->x11.win);
        ecore_x_window_show(ee->x11.win);
        ecore_x_window_focus(ee->x11.win);
+       ecore_x_window_shape_mask_set(ee->x11.win_container, 0);
        ee->x = 0;
        ee->y = 0;
      }
@@ -900,6 +987,7 @@
        ecore_x_window_size_get(ee->x11.win_container, &pw, &ph);
        ecore_x_window_reparent(ee->x11.win, ee->x11.win_container, 0, 0);
        ecore_x_window_resize(ee->x11.win, pw, ph);
+       ecore_x_window_shape_mask_set(ee->x11.win, 0);
      }
    ee->prop.fullscreen = on;
 }
@@ -914,22 +1002,29 @@
 ecore_evas_avoid_damage_set(Ecore_Evas *ee, int on)
 {
    Evas_Engine_Info_Software_X11 *einfo;
-   
+
+   if (((ee->prop.avoid_damage) && (on)) ||
+       ((!ee->prop.avoid_damage) && (!on)))
+     return;
    ee->prop.avoid_damage = on;   
    einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
    if (einfo)
      {
        if (ee->prop.avoid_damage)
          {
+            ee->x11.pmap = ecore_x_pixmap_new(ee->x11.win, ee->w, ee->h, 0);
+            ee->x11.gc = ecore_x_gc_new(ee->x11.pmap);
             einfo->info.drawable = ee->x11.pmap;
-            einfo->info.drawable = ee->x11.mask;
             evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
             evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
          }
        else
          {
+            if (ee->x11.pmap) ecore_x_pixmap_del(ee->x11.pmap);
+            if (ee->x11.gc) ecore_x_gc_del(ee->x11.gc);
+            ee->x11.pmap = 0;
+            ee->x11.gc = 0;
             einfo->info.drawable = ee->x11.win;
-            einfo->info.drawable = ee->x11.mask;
             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.5
retrieving revision 1.1.2.6
diff -u -3 -r1.1.2.5 -r1.1.2.6
--- ecore_evas_private.h        8 Feb 2003 05:05:04 -0000       1.1.2.5
+++ ecore_evas_private.h        9 Feb 2003 00:41:46 -0000       1.1.2.6
@@ -1,12 +1,8 @@
 #ifndef _ECORE_EVAS_PRIVATE_H
 #define _ECORE_EVAS_PRIVATE_H
 
-#define BUILD_EVAS_X
-
 #include <Evas.h>
-#ifdef BUILD_EVAS_X
 #include <Evas_Engine_Software_X11.h>
-#endif
 
 typedef struct _Ecore_Evas Ecore_Evas;
 
@@ -64,14 +60,14 @@
       void          (*fn_mouse_out) (Ecore_Evas *ee);
    } func;
    
-#ifdef BUILD_EVAS_X   
    struct {
       Window         win_container;
       Window         win;
       Pixmap         pmap;
       Pixmap         mask;
+      GC             gc;
+      GC             gcm;
    } x11;
-#endif
 };
 
 #endif




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