Oops. I was up too late last night. Caught a couple of critters too.
authorxcomputerman <xcomputerman>
Fri, 19 May 2006 14:23:04 +0000 (14:23 +0000)
committerxcomputerman <xcomputerman@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 19 May 2006 14:23:04 +0000 (14:23 +0000)
SVN revision: 22740

legacy/ecore/src/lib/ecore_x/Makefile.am
legacy/ecore/src/lib/ecore_x/ecore_x_damage.c [new file with mode: 0644]
legacy/ecore/src/lib/ecore_x/ecore_x_events.c
legacy/ecore/src/lib/ecore_x/ecore_x_fixes.c [new file with mode: 0644]

index ddce0a7..deda086 100644 (file)
@@ -40,6 +40,8 @@ ecore_x.c \
 ecore_x_dnd.c \
 ecore_x_sync.c \
 ecore_x_randr.c \
+ecore_x_fixes.c \
+ecore_x_damage.c \
 ecore_x_error.c \
 ecore_x_events.c \
 ecore_x_icccm.c \
@@ -91,6 +93,8 @@ ecore_x.c \
 ecore_x_dnd.c \
 ecore_x_sync.c \
 ecore_x_randr.c \
+ecore_x_fixes.c \
+ecore_x_damage.c \
 ecore_x_error.c \
 ecore_x_events.c \
 ecore_x_icccm.c \
diff --git a/legacy/ecore/src/lib/ecore_x/ecore_x_damage.c b/legacy/ecore/src/lib/ecore_x/ecore_x_damage.c
new file mode 100644 (file)
index 0000000..6b35c7a
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+
+static int _damage_available;
+static int _damage_major, _damage_minor;
+
+void
+_ecore_x_damage_init(void)
+{
+#ifdef ECORE_XDAMAGE
+   _damage_major = 1;
+   _damage_minor = 0;
+
+   if (XDamageQueryVersion(_ecore_x_disp, &_damage_major, &_damage_minor))
+     _damage_available = 1;
+   else
+     _damage_available = 0;
+#else
+   _damage_available = 0;
+#endif
+}
+
+EAPI int
+ecore_x_damage_query(void)
+{
+   return _damage_available;
+}
+
+EAPI Ecore_X_Damage
+ecore_x_damage_new(Ecore_X_Drawable d, Ecore_X_Damage_Report_Level level)
+{
+#ifdef ECORE_XDAMAGE
+   Ecore_X_Damage damage;
+
+   damage = XDamageCreate(_ecore_x_disp, d, level);
+   return damage;
+#else
+   return 0;
+#endif
+}
+
+EAPI void
+ecore_x_damage_del(Ecore_X_Damage damage)
+{
+#ifdef ECORE_XDAMAGE
+   XDamageDestroy(_ecore_x_disp, damage);
+#endif
+}
+
+EAPI void
+ecore_x_damage_subtract(Ecore_X_Damage damage, Ecore_X_Region repair, Ecore_X_Region parts)
+{
+#ifdef ECORE_XDAMAGE
+   XDamageSubtract(_ecore_x_disp, damage, repair, parts);
+#endif
+}
+
index 880f66e..5eb811c 100644 (file)
@@ -1690,6 +1690,8 @@ _ecore_x_event_handle_damage_notify(XEvent *event)
    XDamageNotifyEvent *damage_event;
    Ecore_X_Event_Damage *e;
 
+   damage_event = (XDamageNotifyEvent *)event;
+
    e = calloc(1, sizeof(Ecore_X_Event_Damage));
    if (!e) return;
 
diff --git a/legacy/ecore/src/lib/ecore_x/ecore_x_fixes.c b/legacy/ecore/src/lib/ecore_x/ecore_x_fixes.c
new file mode 100644 (file)
index 0000000..38231c9
--- /dev/null
@@ -0,0 +1,239 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+
+static int _fixes_available;
+static int _fixes_major, _fixes_minor;
+
+void
+_ecore_x_fixes_init(void)
+{
+#ifdef ECORE_XFIXES
+   _fixes_major = 3;
+   _fixes_minor = 0;
+
+   if (XFixesQueryVersion(_ecore_x_disp, &_fixes_major, &_fixes_minor))
+     _fixes_available = 1;
+   else
+     _fixes_available = 0;
+#else
+   _fixes_available = 0;
+#endif
+}
+
+/* I don't know what to call this function. */
+static XRectangle *
+_ecore_x_rectangle_ecore_to_x(Ecore_X_Rectangle *rects, int num)
+{
+   XRectangle *xrect;
+   int i;
+
+   if (num == 0) return NULL;
+
+   xrect = malloc(sizeof(XRectangle) * num);
+   if (!xrect) return NULL;
+   for (i = 0; i < num; i++)
+     {
+       xrect[i].x = rects[i].x;
+       xrect[i].y = rects[i].y;
+       xrect[i].width = rects[i].width;
+       xrect[i].height = rects[i].height;
+     }
+   return xrect;
+}
+
+static Ecore_X_Rectangle *
+_ecore_x_rectangle_x_to_ecore(XRectangle *xrect, int num)
+{
+   Ecore_X_Rectangle *rects;
+   int i;
+
+   if (num == 0) return NULL;
+   rects = malloc(sizeof(Ecore_X_Rectangle) * num);
+   if (!rects) return NULL;
+   for (i = 0; i < num; i++)
+     {
+       rects[i].x = xrect[i].x;
+       rects[i].y = xrect[i].y;
+       rects[i].width = xrect[i].width;
+       rects[i].height = xrect[i].height;
+     }
+   return rects;
+}
+
+EAPI Ecore_X_Region
+ecore_x_region_new(Ecore_X_Rectangle *rects, int num)
+{
+#ifdef ECORE_XFIXES
+   Ecore_X_Region region;
+   XRectangle *xrect;
+
+   xrect = _ecore_x_rectangle_ecore_to_x(rects, num);
+   region = XFixesCreateRegion(_ecore_x_disp, xrect, num);
+   return region;
+#else
+   return 0;
+#endif
+}
+
+EAPI Ecore_X_Region
+ecore_x_region_new_from_bitmap(Ecore_X_Pixmap bitmap)
+{
+#ifdef ECORE_XFIXES
+   Ecore_X_Region region;
+
+   region = XFixesCreateRegionFromBitmap(_ecore_x_disp, bitmap);
+   return region;
+#else
+   return 0;
+#endif
+}
+
+EAPI Ecore_X_Region
+ecore_x_region_new_from_window(Ecore_X_Window win, Ecore_X_Region_Type type)
+{
+#ifdef ECORE_XFIXES
+   Ecore_X_Region region;
+
+   region = XFixesCreateRegionFromWindow(_ecore_x_disp, win, type);
+   return region;
+#else
+   return 0;
+#endif
+}
+
+EAPI Ecore_X_Region
+ecore_x_region_new_from_gc(Ecore_X_GC gc)
+{
+#ifdef ECORE_XFIXES
+   Ecore_X_Region region;
+
+   region = XFixesCreateRegionFromGC(_ecore_x_disp, gc);
+   return region;
+#else
+   return 0;
+#endif
+}
+
+EAPI Ecore_X_Region
+ecore_x_region_new_from_picture(Ecore_X_Picture picture)
+{
+#ifdef ECORE_XFIXES
+   Ecore_X_Region region;
+
+   region = XFixesCreateRegionFromPicture(_ecore_x_disp, picture);
+   return region;
+#else
+   return 0;
+#endif
+}
+
+EAPI void
+ecore_x_region_del(Ecore_X_Region region)
+{
+#ifdef ECORE_XFIXES
+   XFixesDestroyRegion(_ecore_x_disp, region);
+#endif
+}
+
+EAPI void
+ecore_x_region_set(Ecore_X_Region region, Ecore_X_Rectangle *rects, int num)
+{
+#ifdef ECORE_XFIXES
+   XRectangle *xrect = _ecore_x_rectangle_ecore_to_x(rects, num);
+   XFixesSetRegion(_ecore_x_disp, region, xrect, num);
+#endif
+}
+
+EAPI void
+ecore_x_region_copy(Ecore_X_Region dest, Ecore_X_Region source)
+{
+#ifdef ECORE_XFIXES
+   XFixesCopyRegion(_ecore_x_disp, dest, source);
+#endif
+}
+
+EAPI void
+ecore_x_region_combine(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2)
+{
+#ifdef ECORE_XFIXES
+   XFixesUnionRegion(_ecore_x_disp, dest, source1, source2);
+#endif
+}
+
+EAPI void
+ecore_x_region_intersect(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2)
+{
+#ifdef ECORE_XFIXES
+   XFixesIntersectRegion(_ecore_x_disp, dest, source1, source2);
+#endif
+}
+
+EAPI void
+ecore_x_region_subtract(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2)
+{
+#ifdef ECORE_XFIXES
+   XFixesSubtractRegion(_ecore_x_disp, dest, source1, source2);
+#endif
+}
+
+EAPI void
+ecore_x_region_invert(Ecore_X_Region dest, Ecore_X_Rectangle *bounds, Ecore_X_Region source)
+{
+#ifdef ECORE_XFIXES
+   XRectangle *xbound;
+   int num = 0;
+
+   while(bounds + num) num++;
+   xbound = _ecore_x_rectangle_ecore_to_x(bounds, num);
+
+   XFixesInvertRegion(_ecore_x_disp, dest, xbound, source);
+#endif
+}
+
+EAPI void
+ecore_x_region_translate(Ecore_X_Region region, int dx, int dy)
+{
+#ifdef ECORE_XFIXES
+   XFixesTranslateRegion(_ecore_x_disp, region, dx, dy);
+#endif
+}
+
+EAPI void
+ecore_x_region_extents(Ecore_X_Region dest, Ecore_X_Region source)
+{
+#ifdef ECORE_XFIXES
+   XFixesRegionExtents(_ecore_x_disp, dest, source);
+#endif
+}
+
+EAPI Ecore_X_Rectangle *
+ecore_x_region_fetch(Ecore_X_Region region, int *num, Ecore_X_Rectangle *bounds){
+#ifdef ECORE_XFIXES
+     Ecore_X_Rectangle *rects;
+     XRectangle *xrect, xbound;
+
+     xrect = XFixesFetchRegionAndBounds(_ecore_x_disp, region, num, &xbound);
+     rects = _ecore_x_rectangle_x_to_ecore(xrect, *num);
+     (*bounds).x = xbound.x;
+     (*bounds).y = xbound.y;
+     (*bounds).width = xbound.width;
+     (*bounds).height = xbound.height;
+     return rects;
+#else
+     return NULL;
+#endif
+}
+
+EAPI void
+ecore_x_region_expand(Ecore_X_Region dest, Ecore_X_Region source, unsigned int left, unsigned int right, unsigned int top, unsigned int bottom)
+{
+#ifdef ECORE_XFIXES
+   XFixesExpandRegion(_ecore_x_disp, dest, source, left, right, top, bottom);
+#endif
+}
+
+