forked from enlightenment/efl
ok- actually handle dest buf if there is no back buf
SVN revision: 21756
This commit is contained in:
parent
82f8e24b2c
commit
28dc440e17
|
@ -261,7 +261,39 @@ evas_buffer_outbuf_buf_push_updated_region(Outbuf *buf, RGBA_Image *update, int
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case OUTBUF_DEPTH_RGB_32BPP_888_8888:
|
case OUTBUF_DEPTH_RGB_32BPP_888_8888:
|
||||||
/* no need src == dest */
|
case OUTBUF_DEPTH_ARGB_32BPP_8888_8888:
|
||||||
|
{
|
||||||
|
DATA32 *dest, *src, *dst;
|
||||||
|
int xx, yy, row_bytes;
|
||||||
|
|
||||||
|
row_bytes = buf->dest_row_bytes;
|
||||||
|
dest = (DATA8 *)(buf->dest) + (y * row_bytes) + (x * 4);
|
||||||
|
if (buf->func.new_update_region)
|
||||||
|
{
|
||||||
|
dest = buf->func.new_update_region(x, y, w, h, &row_bytes);
|
||||||
|
}
|
||||||
|
/* no need src == dest */
|
||||||
|
if (!buf->priv.back_buf)
|
||||||
|
{
|
||||||
|
Gfx_Func_Blend_Src_Dst func;
|
||||||
|
|
||||||
|
func = evas_common_draw_func_copy_get(w, 0);
|
||||||
|
if (func)
|
||||||
|
{
|
||||||
|
for (yy = 0; yy < h; yy++)
|
||||||
|
{
|
||||||
|
src = update->image->data + (yy * update->image->w);
|
||||||
|
dst = (DATA8 *)(buf->dest) + ((y + yy) * row_bytes);
|
||||||
|
func(src, dst, w);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (buf->func.free_update_region)
|
||||||
|
{
|
||||||
|
buf->func.free_update_region(x, y, w, h, dest);
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case OUTBUF_DEPTH_BGR_32BPP_888_8888:
|
case OUTBUF_DEPTH_BGR_32BPP_888_8888:
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue