forked from enlightenment/efl
Oops. I was up too late last night. Caught a couple of critters too.
SVN revision: 22740
This commit is contained in:
parent
f2056229e7
commit
0e8e8f2fd1
|
@ -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 \
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue