int lbytes;
int bpp;
-// return evas_software_xcb_x_output_buffer_new(d, v, depth, w, h, shm, data);
if (!shm)
return evas_software_xcb_x_output_buffer_new(conn, depth, w, h, shm, data);
if (depth > 1)
static void
_unfind_xcbob(Xcb_Output_Buffer *xcbob, int sync)
{
-// evas_software_xcb_x_output_buffer_free(xcbob, sync); return;
if (xcbob->shm_info)
{
shmpool = eina_list_prepend(shmpool, xcbob);
Eina_Rectangle *rect;
RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, buf->w, buf->h);
+ obr = calloc(1, sizeof(Outbuf_Region));
+ if (!obr) return NULL;
rect = eina_rectangle_new(x, y, w, h);
- if (!rect) return NULL;
+ if (!rect)
+ {
+ free(obr);
+ return NULL;
+ }
buf->priv.onebuf_regions = eina_list_append(buf->priv.onebuf_regions, rect);
if (buf->priv.onebuf)
}
return buf->priv.onebuf;
}
- obr = calloc(1, sizeof(Outbuf_Region));
obr->x = 0;
obr->y = 0;
obr->w = buf->w;
buf->w, buf->h,
use_shm,
NULL);
+ if (!obr->xcbob)
+ {
+ free(obr);
+ return NULL;
+ }
im = (RGBA_Image *) evas_cache_image_data(evas_common_image_cache_get(),
buf->w, buf->h,
(DATA32 *)evas_software_xcb_x_output_buffer_data(obr->xcbob, &bpl),
alpha, EVAS_COLORSPACE_ARGB8888);
- im->extended_info = obr;
- if (buf->priv.x11.xcb.mask)
- obr->mxcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn,
- 1,
- buf->w, buf->h,
- use_shm,
- NULL);
+ if (!im)
+ {
+ evas_software_xcb_x_output_buffer_free(obr->xcbob, 0);
+ free(obr);
+ return NULL;
+ }
+ im->extended_info = obr;
+ if (buf->priv.x11.xcb.mask)
+ obr->mxcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn,
+ 1,
+ buf->w, buf->h,
+ use_shm,
+ NULL);
}
else
{
im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+ if (!im)
+ {
+ free(obr);
+ return NULL;
+ }
im->cache_entry.flags.alpha |= alpha ? 1 : 0;
evas_cache_image_surface_alloc(&im->cache_entry, buf->w, buf->h);
im->extended_info = obr;
buf->w, buf->h,
use_shm,
NULL);
+ if (!obr->xcbob)
+ {
+ evas_cache_image_drop(&im->cache_entry);
+ free(obr);
+ return NULL;
+ }
if (buf->priv.x11.xcb.mask)
obr->mxcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn,
1,
buf->h, buf->w,
use_shm,
NULL);
+ if (!obr->xcbob)
+ {
+ evas_cache_image_drop(&im->cache_entry);
+ free(obr);
+ return NULL;
+ }
if (buf->priv.x11.xcb.mask)
obr->mxcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn,
1,
}
/* FIXME: We should be able to remove this memset, but somewhere in the process
we copy too much to the destination surface and some area are not cleaned before copy. */
- if (alpha)
- /* FIXME: faster memset! */
- memset(im->image.data, 0, w * h * sizeof(DATA32));
+ if ((alpha) && (im->image.data))
+ {
+ /* FIXME: faster memset! */
+ memset(im->image.data, 0, w * h * sizeof(DATA32));
+ }
buf->priv.onebuf = im;
return im;
obr = calloc(1, sizeof(Outbuf_Region));
+ if (!obr) return NULL;
obr->x = x;
obr->y = y;
obr->w = w;
w, h,
use_shm,
NULL);
- im = (RGBA_Image *) evas_cache_image_data(evas_common_image_cache_get(),
- w, h,
- (DATA32 *) evas_software_xcb_x_output_buffer_data(obr->xcbob, &bpl),
- alpha, EVAS_COLORSPACE_ARGB8888);
- im->extended_info = obr;
+ if (!obr->xcbob)
+ {
+ free(obr);
+ return NULL;
+ }
+ im = (RGBA_Image *)evas_cache_image_data(evas_common_image_cache_get(),
+ w, h,
+ (DATA32 *) evas_software_xcb_x_output_buffer_data(obr->xcbob, &bpl),
+ alpha, EVAS_COLORSPACE_ARGB8888);
+ if (!im)
+ {
+ _unfind_xob(obr->xob, 0);
+ free(obr);
+ return NULL;
+ }
+ im->extended_info = obr;
if (buf->priv.x11.xcb.mask)
obr->mxcbob = _find_xcbob(buf->priv.x11.xcb.conn,
1,
w, h,
use_shm,
NULL);
-/* obr->mxcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn, */
-/* 1, */
-/* w, */
-/* h, */
-/* use_shm, */
-/* NULL); */
}
else
{
- im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+ im = (RGBA_Image *)evas_cache_image_empty(evas_common_image_cache_get());
+ if (!im)
+ {
+ free(obr);
+ return NULL;
+ }
im->cache_entry.flags.alpha |= alpha ? 1 : 0;
evas_cache_image_surface_alloc(&im->cache_entry, w, h);
im->extended_info = obr;
w, h,
use_shm,
NULL);
+ if (!obr->xcbob)
+ {
+ evas_cache_image_drop(&im->cache_entry);
+ free(obr);
+ return NULL;
+ }
if (buf->priv.x11.xcb.mask)
obr->mxcbob = _find_xcbob(buf->priv.x11.xcb.conn,
1,
use_shm,
NULL);
}
-/* obr->xcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn, */
-/* buf->priv.x11.xcb.depth, */
-/* w, */
-/* h, */
-/* use_shm, */
-/* NULL); */
else if ((buf->rot == 90) || (buf->rot == 270))
{
obr->xcbob = _find_xcbob(buf->priv.x11.xcb.conn,
h, w,
use_shm,
NULL);
+ if (!obr->xcbob)
+ {
+ evas_cache_image_drop(&im->cache_entry);
+ free(obr);
+ return NULL;
+ }
if (buf->priv.x11.xcb.mask)
obr->mxcbob = _find_xcbob(buf->priv.x11.xcb.conn,
1,
use_shm,
NULL);
}
-/* obr->xcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn, */
-/* buf->priv.x11.xcb.depth, */
-/* h, */
-/* w, */
-/* use_shm, */
-/* NULL); */
-/*
- if (buf->priv.x11.xcb.mask)
- obr->mxcbob = _find_xcbob(buf->priv.x11.xcb.conn,
- 1, w, h,
- use_shm,
- NULL);
-*/
-/* obr->mxcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x11.xcb.conn, */
-/* 1, */
-/* w, */
-/* h, */
-/* use_shm, */
-/* NULL); */
}
/* FIXME: We should be able to remove this memset, but somewhere in the process
we copy too much to the destination surface and some area are not cleaned before copy. */
- if ((buf->priv.x11.xcb.mask) || (buf->priv.destination_alpha))
- /* FIXME: faster memset! */
- memset(im->image.data, 0, w * h * sizeof(DATA32));
+ if (((buf->priv.x11.xlib.mask) || (buf->priv.destination_alpha)) &&
+ (im->image.data))
+ {
+ /* FIXME: faster memset! */
+ memset(im->image.data, 0, w * h * sizeof(DATA32));
+ }
buf->priv.pending_writes = eina_list_append(buf->priv.pending_writes, im);
return im;
buf->priv.x11.xcb.gc,
0, 0, pixman_region_n_rects(&tmpr),
(const xcb_rectangle_t *)pixman_region_rectangles(&tmpr, NULL));
- evas_software_xcb_x_output_buffer_paste(obr->xcbob, buf->priv.x11.xcb.win,
- buf->priv.x11.xcb.gc,
- 0, 0, 0);
+ if (obr->xcbob)
+ evas_software_xcb_x_output_buffer_paste(obr->xcbob, buf->priv.x11.xcb.win,
+ buf->priv.x11.xcb.gc,
+ 0, 0, 0);
if (obr->mxcbob)
{
xcb_set_clip_rectangles(buf->priv.x11.xcb.conn, XCB_CLIP_ORDERING_YX_BANDED,
obr->y,
obr->w,
obr->h);
- evas_software_xcb_x_output_buffer_paste(obr->xcbob,
- buf->priv.x11.xcb.win,
- buf->priv.x11.xcb.gc,
- obr->x,
- obr->y, 0);
+ if (obr->xcbob)
+ evas_software_xcb_x_output_buffer_paste(obr->xcbob,
+ buf->priv.x11.xcb.win,
+ buf->priv.x11.xcb.gc,
+ obr->x,
+ obr->y, 0);
if (obr->mxcbob)
evas_software_xcb_x_output_buffer_paste(obr->mxcbob,
buf->priv.x11.xcb.mask,
evas_cache_image_drop(&im->cache_entry);
if (obr->xcbob) _unfind_xcbob(obr->xcbob, 0);
if (obr->mxcbob) _unfind_xcbob(obr->mxcbob, 0);
-/* if (obr->xcbob) evas_software_xcb_x_output_buffer_free(obr->xcbob, 0); */
-/* if (obr->mxcbob) evas_software_xcb_x_output_buffer_free(obr->mxcbob, 0); */
free(obr);
}
buf->priv.prev_pending_writes = buf->priv.pending_writes;
evas_cache_image_drop(&im->cache_entry);
if (obr->xcbob) _unfind_xcbob(obr->xcbob, 0);
if (obr->mxcbob) _unfind_xcbob(obr->mxcbob, 0);
-/*
- if (obr->xcbob) evas_software_x11_x_output_buffer_free(obr->xcbob, 0);
- if (obr->mxcbob) evas_software_x11_x_output_buffer_free(obr->mxcbob, 0);
- */
free(obr);
evas_cache_image_drop(&im->cache_entry);
}
}
if (!conv_func) return;
+ if (!obr->xcbob) return;
data = evas_software_xcb_x_output_buffer_data(obr->xcbob, &bpl);
+ if (!data) return;
src_data = update->image.data;
+ if (!src_data) return;
if (buf->rot == 0)
{
obr->x = x;
if (buf->priv.debug)
evas_software_xcb_outbuf_debug_show(buf, buf->priv.x11.xcb.win,
obr->x, obr->y, obr->w, obr->h);
- evas_software_xcb_x_output_buffer_paste(obr->xcbob, buf->priv.x11.xcb.win,
- buf->priv.x11.xcb.gc,
- obr->x, obr->y, 0);
+ if (obr->xcbob)
+ evas_software_xcb_x_output_buffer_paste(obr->xcbob, buf->priv.x11.xcb.win,
+ buf->priv.x11.xcb.gc,
+ obr->x, obr->y, 0);
}
#endif
if (obr->mxcbob)
}
buf->priv.x11.xcb.mask = mask;
if (buf->priv.x11.xcb.mask)
- {
- buf->priv.x11.xcb.gcm = xcb_generate_id(buf->priv.x11.xcb.conn);
- xcb_create_gc(buf->priv.x11.xcb.conn, buf->priv.x11.xcb.gcm, buf->priv.x11.xcb.win, 0, NULL);
- }
+ {
+ buf->priv.x11.xcb.gcm = xcb_generate_id(buf->priv.x11.xcb.conn);
+ xcb_create_gc(buf->priv.x11.xcb.conn, buf->priv.x11.xcb.gcm, buf->priv.x11.xcb.win, 0, NULL);
+ }
}
void
i = xcb_setup_roots_iterator((xcb_setup_t *)xcb_get_setup(buf->priv.x11.xcb.conn));
for (; i.rem; xcb_screen_next(&i))
- if (i.data->root == geom->root)
- {
- screen = i.data;
- break;
- }
+ {
+ if (i.data->root == geom->root)
+ {
+ screen = i.data;
+ break;
+ }
+ }
free (geom);
}
for (i = 0; i < 20; i++)
{
-/* xcb_image_t *image; */
xcb_rectangle_t rect = { x, y, w, h};
uint32_t mask;
uint32_t value[2];
xcb_poly_fill_rectangle (buf->priv.x11.xcb.conn, draw, buf->priv.x11.xcb.gc, 1, &rect);
/* we sync */
free(xcb_get_input_focus_reply(buf->priv.x11.xcb.conn, xcb_get_input_focus_unchecked(buf->priv.x11.xcb.conn), NULL));
-// image = xcb_image_get(buf->priv.x11.xcb.conn, draw, x, y, w, h, XCB_ALL_PLANES, XCB_IMAGE_FORMAT_Z_PIXMAP);
-// if (image)
-// xcb_image_destroy(image);
/* we sync */
free(xcb_get_input_focus_reply(buf->priv.x11.xcb.conn, xcb_get_input_focus_unchecked(buf->priv.x11.xcb.conn), NULL));
mask = XCB_GC_FOREGROUND | XCB_GC_GRAPHICS_EXPOSURES;
xcb_poly_fill_rectangle (buf->priv.x11.xcb.conn, draw, buf->priv.x11.xcb.gc, 1, &rect);
/* we sync */
free(xcb_get_input_focus_reply(buf->priv.x11.xcb.conn, xcb_get_input_focus_unchecked(buf->priv.x11.xcb.conn), NULL));
-// image = xcb_image_get(buf->priv.x11.xcb.conn, draw, x, y, w, h, XCB_ALL_PLANES, XCB_IMAGE_FORMAT_Z_PIXMAP);
-// if (image)
-// xcb_image_destroy(image);
/* we sync */
free(xcb_get_input_focus_reply(buf->priv.x11.xcb.conn, xcb_get_input_focus_unchecked(buf->priv.x11.xcb.conn), NULL));
}
int fitness = 0x7fffffff;
int sz, lbytes, bpp;
-// return evas_software_xlib_x_output_buffer_new(d, v, depth, w, h, shm, data);
if (!shm)
return evas_software_xlib_x_output_buffer_new(d, v, depth, w, h, shm, data);
if (depth > 1)
static void
_unfind_xob(X_Output_Buffer *xob, int sync)
{
-// evas_software_xlib_x_output_buffer_free(xob, sync); return;
if (xob->shm_info)
{
SHMPOOL_LOCK();
Eina_Rectangle *rect;
RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, buf->w, buf->h);
+ obr = calloc(1, sizeof(Outbuf_Region));
+ if (!obr) return NULL;
rect = eina_rectangle_new(x, y, w, h);
- if (!rect) return NULL;
+ if (!rect)
+ {
+ free(obr);
+ return NULL;
+ }
buf->priv.onebuf_regions = eina_list_append(buf->priv.onebuf_regions, rect);
if (buf->priv.onebuf)
}
return buf->priv.onebuf;
}
- obr = calloc(1, sizeof(Outbuf_Region));
obr->x = 0;
obr->y = 0;
obr->w = buf->w;
buf->w, buf->h,
use_shm,
NULL);
- im = (RGBA_Image *) evas_cache_image_data(evas_common_image_cache_get(),
- buf->w, buf->h,
- (DATA32 *) evas_software_xlib_x_output_buffer_data(obr->xob, &bpl),
- alpha, EVAS_COLORSPACE_ARGB8888);
- im->extended_info = obr;
- if (buf->priv.x11.xlib.mask)
- obr->mxob = evas_software_xlib_x_output_buffer_new(buf->priv.x11.xlib.disp,
- buf->priv.x11.xlib.vis,
- 1,
- buf->w, buf->h,
- use_shm,
- NULL);
+ if (!obr->xob)
+ {
+ free(obr);
+ return NULL;
+ }
+ im = (RGBA_Image *)evas_cache_image_data(evas_common_image_cache_get(),
+ buf->w, buf->h,
+ (DATA32 *) evas_software_xlib_x_output_buffer_data(obr->xob, &bpl),
+ alpha, EVAS_COLORSPACE_ARGB8888);
+ if (!im)
+ {
+ evas_software_xlib_x_output_buffer_free(obr->xob, 0);
+ free(obr);
+ return NULL;
+ }
+ im->extended_info = obr;
+ if (buf->priv.x11.xlib.mask)
+ obr->mxob = evas_software_xlib_x_output_buffer_new(buf->priv.x11.xlib.disp,
+ buf->priv.x11.xlib.vis,
+ 1,
+ buf->w, buf->h,
+ use_shm,
+ NULL);
}
else
{
- im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+ im = (RGBA_Image *)evas_cache_image_empty(evas_common_image_cache_get());
+ if (!im)
+ {
+ free(obr);
+ return NULL;
+ }
im->cache_entry.flags.alpha |= alpha ? 1 : 0;
evas_cache_image_surface_alloc(&im->cache_entry, buf->w, buf->h);
im->extended_info = obr;
buf->w, buf->h,
use_shm,
NULL);
+ if (!obr->xob)
+ {
+ evas_cache_image_drop(&im->cache_entry);
+ free(obr);
+ return NULL;
+ }
if (buf->priv.x11.xlib.mask)
- obr->mxob = evas_software_xlib_x_output_buffer_new(buf->priv.x11.xlib.disp,
- buf->priv.x11.xlib.vis,
- 1, buf->w, buf->h,
- use_shm,
- NULL);
+ obr->mxob = evas_software_xlib_x_output_buffer_new(buf->priv.x11.xlib.disp,
+ buf->priv.x11.xlib.vis,
+ 1, buf->w, buf->h,
+ use_shm,
+ NULL);
}
else if ((buf->rot == 90) || (buf->rot == 270))
{
buf->h, buf->w,
use_shm,
NULL);
+ if (!obr->xob)
+ {
+ evas_cache_image_drop(&im->cache_entry);
+ free(obr);
+ return NULL;
+ }
if (buf->priv.x11.xlib.mask)
obr->mxob = evas_software_xlib_x_output_buffer_new(buf->priv.x11.xlib.disp,
buf->priv.x11.xlib.vis,
}
/* FIXME: We should be able to remove this memset, but somewhere in the process
we copy too much to the destination surface and some area are not cleaned before copy. */
- if (alpha)
- /* FIXME: faster memset! */
- memset(im->image.data, 0, w * h * sizeof(DATA32));
+ if ((alpha) && (im->image.data))
+ {
+ /* FIXME: faster memset! */
+ memset(im->image.data, 0, w * h * sizeof(DATA32));
+ }
buf->priv.onebuf = im;
return im;
}
obr = calloc(1, sizeof(Outbuf_Region));
+ if (!obr) return NULL;
obr->x = x;
obr->y = y;
obr->w = w;
w, h,
use_shm,
NULL);
-/* obr->xob = evas_software_xlib_x_output_buffer_new(buf->priv.x11.xlib.disp, */
-/* buf->priv.x11.xlib.vis, */
-/* buf->priv.x11.xlib.depth, */
-/* w, h, */
-/* use_shm, */
-/* NULL); */
- im = (RGBA_Image *) evas_cache_image_data(evas_common_image_cache_get(),
- w, h,
- (DATA32 *) evas_software_xlib_x_output_buffer_data(obr->xob, &bpl),
- alpha, EVAS_COLORSPACE_ARGB8888);
+ if (!obr->xob)
+ {
+ free(obr);
+ return NULL;
+ }
+ im = (RGBA_Image *)evas_cache_image_data(evas_common_image_cache_get(),
+ w, h,
+ (DATA32 *) evas_software_xlib_x_output_buffer_data(obr->xob, &bpl),
+ alpha, EVAS_COLORSPACE_ARGB8888);
+ if (!im)
+ {
+ _unfind_xob(obr->xob, 0);
+ free(obr);
+ return NULL;
+ }
im->extended_info = obr;
if (buf->priv.x11.xlib.mask)
obr->mxob = _find_xob(buf->priv.x11.xlib.disp,
1, w, h,
use_shm,
NULL);
-/*
- obr->mxob = evas_software_xlib_x_output_buffer_new(buf->priv.x11.xlib.disp,
- buf->priv.x11.xlib.vis,
- 1, w, h,
- use_shm,
- NULL);
- */
}
else
{
- im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+ im = (RGBA_Image *)evas_cache_image_empty(evas_common_image_cache_get());
+ if (!im)
+ {
+ free(obr);
+ return NULL;
+ }
im->cache_entry.flags.alpha |= alpha ? 1 : 0;
evas_cache_image_surface_alloc(&im->cache_entry, w, h);
im->extended_info = obr;
w, h,
use_shm,
NULL);
+ if (!obr->xob)
+ {
+ evas_cache_image_drop(&im->cache_entry);
+ free(obr);
+ return NULL;
+ }
if (buf->priv.x11.xlib.mask)
obr->mxob = _find_xob(buf->priv.x11.xlib.disp,
buf->priv.x11.xlib.vis,
use_shm,
NULL);
}
-/*
- obr->xob = evas_software_xlib_x_output_buffer_new(buf->priv.x11.xlib.disp,
- buf->priv.x11.xlib.vis,
- buf->priv.x11.xlib.depth,
- w, h,
- use_shm,
- NULL);
- */
else if ((buf->rot == 90) || (buf->rot == 270))
{
obr->xob = _find_xob(buf->priv.x11.xlib.disp,
h, w,
use_shm,
NULL);
+ if (!obr->xob)
+ {
+ evas_cache_image_drop(&im->cache_entry);
+ free(obr);
+ return NULL;
+ }
if (buf->priv.x11.xlib.mask)
obr->mxob = _find_xob(buf->priv.x11.xlib.disp,
buf->priv.x11.xlib.vis,
use_shm,
NULL);
}
-/*
- obr->xob = evas_software_xlib_x_output_buffer_new(buf->priv.x11.xlib.disp,
- buf->priv.x11.xlib.vis,
- buf->priv.x11.xlib.depth,
- h, w,
- use_shm,
- NULL);
- */
-/*
- if (buf->priv.x11.xlib.mask)
- obr->mxob = _find_xob(buf->priv.x11.xlib.disp,
- buf->priv.x11.xlib.vis,
- 1, w, h,
- use_shm,
- NULL);
- */
-/*
- obr->mxob = evas_software_xlib_x_output_buffer_new(buf->priv.x11.xlib.disp,
- buf->priv.x11.xlib.vis,
- 1, w, h,
- use_shm,
- NULL);
- */
}
/* FIXME: We should be able to remove this memset, but somewhere in the process
we copy too much to the destination surface and some area are not cleaned before copy. */
- if ((buf->priv.x11.xlib.mask) || (buf->priv.destination_alpha))
- /* FIXME: faster memset! */
- memset(im->image.data, 0, w * h * sizeof(DATA32));
+ if (((buf->priv.x11.xlib.mask) || (buf->priv.destination_alpha)) &&
+ (im->image.data))
+ {
+ /* FIXME: faster memset! */
+ memset(im->image.data, 0, w * h * sizeof(DATA32));
+ }
#ifdef EVAS_FRAME_QUEUING
if (!evas_common_frameq_enabled())
eina_rectangle_free(rect);
}
XSetRegion(buf->priv.x11.xlib.disp, buf->priv.x11.xlib.gc, tmpr);
- evas_software_xlib_x_output_buffer_paste(obr->xob, buf->priv.x11.xlib.win,
- buf->priv.x11.xlib.gc,
- 0, 0, 0);
+ if (obr->xob)
+ evas_software_xlib_x_output_buffer_paste(obr->xob, buf->priv.x11.xlib.win,
+ buf->priv.x11.xlib.gc,
+ 0, 0, 0);
if (obr->mxob)
{
XSetRegion(buf->priv.x11.xlib.disp, buf->priv.x11.xlib.gcm, tmpr);
if (buf->priv.debug)
evas_software_xlib_outbuf_debug_show(buf, buf->priv.x11.xlib.win,
obr->x, obr->y, obr->w, obr->h);
- evas_software_xlib_x_output_buffer_paste(obr->xob, buf->priv.x11.xlib.win,
- buf->priv.x11.xlib.gc,
- obr->x, obr->y, 0);
+ if (obr->xob)
+ evas_software_xlib_x_output_buffer_paste(obr->xob, buf->priv.x11.xlib.win,
+ buf->priv.x11.xlib.gc,
+ obr->x, obr->y, 0);
if (obr->mxob)
evas_software_xlib_x_output_buffer_paste(obr->mxob,
buf->priv.x11.xlib.mask,
obr->x, obr->y, 0);
}
#ifdef EVAS_FRAME_QUEUING
- LKL(buf->priv.lock);
+ LKL(buf->priv.lock);
#endif
while (buf->priv.prev_pending_writes)
{
im = buf->priv.prev_pending_writes->data;
buf->priv.prev_pending_writes =
- eina_list_remove_list(buf->priv.prev_pending_writes,
- buf->priv.prev_pending_writes);
+ eina_list_remove_list(buf->priv.prev_pending_writes,
+ buf->priv.prev_pending_writes);
obr = im->extended_info;
evas_cache_image_drop(&im->cache_entry);
if (obr->xob) _unfind_xob(obr->xob, 0);
if (obr->mxob) _unfind_xob(obr->mxob, 0);
-/*
- if (obr->xob) evas_software_xlib_x_output_buffer_free(obr->xob, 0);
- if (obr->mxob) evas_software_xlib_x_output_buffer_free(obr->mxob, 0);
- */
free(obr);
}
buf->priv.prev_pending_writes = buf->priv.pending_writes;
#ifdef EVAS_FRAME_QUEUING
- LKU(buf->priv.lock);
+ LKU(buf->priv.lock);
#endif
buf->priv.pending_writes = NULL;
XFlush(buf->priv.x11.xlib.disp);
{
RGBA_Image *im;
Outbuf_Region *obr;
-
+
im = eina_list_data_get(buf->priv.pending_writes);
buf->priv.pending_writes = eina_list_remove_list(buf->priv.pending_writes, buf->priv.pending_writes);
obr = im->extended_info;
evas_cache_image_drop(&im->cache_entry);
if (obr->xob) _unfind_xob(obr->xob, 0);
if (obr->mxob) _unfind_xob(obr->mxob, 0);
-/*
- if (obr->xob) evas_software_xlib_x_output_buffer_free(obr->xob, 0);
- if (obr->mxob) evas_software_xlib_x_output_buffer_free(obr->mxob, 0);
- */
free(obr);
evas_cache_image_drop(&im->cache_entry);
}
else
{
#ifdef EVAS_FRAME_QUEUING
- LKL(buf->priv.lock);
+ LKL(buf->priv.lock);
#endif
if (buf->priv.prev_pending_writes) XSync(buf->priv.x11.xlib.disp, False);
while (buf->priv.prev_pending_writes)
{
RGBA_Image *im;
Outbuf_Region *obr;
-
+
im = buf->priv.prev_pending_writes->data;
buf->priv.prev_pending_writes =
- eina_list_remove_list(buf->priv.prev_pending_writes,
- buf->priv.prev_pending_writes);
+ eina_list_remove_list(buf->priv.prev_pending_writes,
+ buf->priv.prev_pending_writes);
obr = im->extended_info;
evas_cache_image_drop(&im->cache_entry);
if (obr->xob) _unfind_xob(obr->xob, 0);
free(obr);
}
#ifdef EVAS_FRAME_QUEUING
- LKU(buf->priv.lock);
+ LKU(buf->priv.lock);
#endif
_clear_xob(0);
}
}
if (!conv_func) return;
+ if (!obr->xob) return;
data = evas_software_xlib_x_output_buffer_data(obr->xob, &bpl);
+ if (!data) return;
src_data = update->image.data;
+ if (!src_data) return;
if (buf->rot == 0)
{
obr->x = x;
{
if (buf->priv.debug)
evas_software_xlib_outbuf_debug_show(buf, buf->priv.x11.xlib.win,
- obr->x, obr->y, obr->w, obr->h);
- evas_software_xlib_x_output_buffer_paste(obr->xob, buf->priv.x11.xlib.win,
- buf->priv.x11.xlib.gc,
- obr->x, obr->y, 0);
+ obr->x, obr->y, obr->w, obr->h);
+ if (obr->xob)
+ evas_software_xlib_x_output_buffer_paste(obr->xob, buf->priv.x11.xlib.win,
+ buf->priv.x11.xlib.gc,
+ obr->x, obr->y, 0);
}
#endif
if (obr->mxob)
}
for (i = 0; i < 20; i++)
{
-// XImage *xim;
-
XSetForeground(buf->priv.x11.xlib.disp, buf->priv.x11.xlib.gc,
BlackPixel(buf->priv.x11.xlib.disp, screen_num));
XFillRectangle(buf->priv.x11.xlib.disp, draw, buf->priv.x11.xlib.gc, x, y, w, h);
XSync(buf->priv.x11.xlib.disp, False);
-// xim =
-// XGetImage(buf->priv.x11.xlib.disp, draw, x, y, w, h, 0xffffffff, ZPixmap);
-// if (xim)
-// XDestroyImage(xim);
XSync(buf->priv.x11.xlib.disp, False);
XSetForeground(buf->priv.x11.xlib.disp, buf->priv.x11.xlib.gc,
WhitePixel(buf->priv.x11.xlib.disp, screen_num));
XFillRectangle(buf->priv.x11.xlib.disp, draw, buf->priv.x11.xlib.gc, x, y, w, h);
XSync(buf->priv.x11.xlib.disp, False);
-// xim =
-// XGetImage(buf->priv.x11.xlib.disp, draw, x, y, w, h, 0xffffffff, ZPixmap);
-// if (xim)
-// XDestroyImage(xim);
XSync(buf->priv.x11.xlib.disp, False);
}
}