buf->priv.x11.xcb.cmap,
buf->priv.x11.xcb.visual,
buf->priv.pal);
+
+ eina_array_flush(&buf->priv.onebuf_regions);
+
free(buf);
_clear_xcbob(EINA_FALSE);
}
buf->priv.destination_alpha = alpha;
buf->priv.x11.xcb.shm = evas_software_xcb_can_do_shm(conn, screen);
+ eina_array_step_set(&buf->priv.onebuf_regions, sizeof(Eina_Array), 8);
+
#ifdef WORDS_BIGENDIAN
if (setup->image_byte_order == XCB_IMAGE_ORDER_LSB_FIRST)
buf->priv.x11.xcb.swap = EINA_TRUE;
return NULL;
}
- buf->priv.onebuf_regions =
- eina_list_append(buf->priv.onebuf_regions, rect);
- if (buf->priv.onebuf)
+ if (!eina_array_push(&buf->priv.onebuf_regions, rect))
{
if (cx) *cx = x;
if (cy) *cy = y;
RGBA_Image *im = NULL;
Outbuf_Region *obr = NULL;
- if ((buf->priv.onebuf) && (buf->priv.onebuf_regions))
+ if ((buf->priv.onebuf) && (eina_array_count(&buf->priv.onebuf_regions)))
{
+ Eina_Array_Iterator it;
+ Eina_Rectangle *rect;
+ unsigned int i = 0;
pixman_region16_t tmpr;
im = buf->priv.onebuf;
obr = im->extended_info;
pixman_region_init(&tmpr);
- while (buf->priv.onebuf_regions)
+ EINA_ARRAY_ITER_NEXT(&buf->priv.onebuf_regions, i, rect, it)
{
- Eina_Rectangle *rect, xr = { 0, 0, 0, 0 };
+ Eina_Rectangle xr = { 0, 0, 0, 0 };
- rect = buf->priv.onebuf_regions->data;
- buf->priv.onebuf_regions =
- eina_list_remove_list(buf->priv.onebuf_regions,
- buf->priv.onebuf_regions);
+ /* rect = buf->priv.onebuf_regions->data; */
+ /* buf->priv.onebuf_regions = */
+ /* eina_list_remove_list(buf->priv.onebuf_regions, */
+ /* buf->priv.onebuf_regions); */
if (buf->rot == 0)
{
xr.x = rect->x;
xr.x, xr.y, xr.w, xr.h);
eina_rectangle_free(rect);
}
+ eina_array_clean(&buf->priv.onebuf_regions);
xcb_set_clip_rectangles(buf->priv.x11.xcb.conn,
XCB_CLIP_ORDERING_YX_BANDED,
buf->priv.x11.xcb.gc, 0, 0,
#if 1
#else
/* Async Push */
- if (!((buf->priv.onebuf) && (buf->priv.onebuf_regions)))
+ if (!((buf->priv.onebuf) && (eina_array_count(&buf->priv.onebuf_regions))))
{
if (buf->priv.debug)
evas_software_xcb_outbuf_debug_show(buf, buf->priv.x11.xcb.win,
#if 1
#else
/* Async Push */
- if (!((buf->priv.onebuf) && (buf->priv.onebuf_regions)))
+ if (!((buf->priv.onebuf) &&
+ (eina_array_count(&buf->priv.onebuf_regions))))
evas_software_xcb_output_buffer_paste(obr->mask,
buf->priv.x11.xcb.mask,
buf->priv.x11.xcb.gcm,