methinks nash you missed doing the pipe pipeline for map changes.

SVN revision: 56805
This commit is contained in:
Carsten Haitzler 2011-02-08 12:10:58 +00:00
parent 7881c0b849
commit c743e4f56c
4 changed files with 33 additions and 31 deletions

View File

@ -1440,23 +1440,23 @@ evas_common_pipe_image_draw(RGBA_Image *src, RGBA_Image *dst,
} }
static void static void
evas_common_pipe_op_map4_free(RGBA_Pipe_Op *op) evas_common_pipe_op_map_free(RGBA_Pipe_Op *op)
{ {
#ifdef EVAS_FRAME_QUEUING #ifdef EVAS_FRAME_QUEUING
LKL(op->op.image.src->cache_entry.ref_fq_del); LKL(op->op.image.src->cache_entry.ref_fq_del);
op->op.image.src->cache_entry.ref_fq[1]++; op->op.image.src->cache_entry.ref_fq[1]++;
LKU(op->op.image.src->cache_entry.ref_fq_del); LKU(op->op.image.src->cache_entry.ref_fq_del);
#else #else
op->op.map4.src->ref--; op->op.map.src->ref--;
if (op->op.map4.src->ref == 0) if (op->op.map.src->ref == 0)
evas_cache_image_drop(&op->op.map4.src->cache_entry); evas_cache_image_drop(&op->op.map.src->cache_entry);
#endif #endif
free(op->op.map4.p); free(op->op.map.p);
evas_common_pipe_op_free(op); evas_common_pipe_op_free(op);
} }
static void static void
evas_common_pipe_map4_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thread_Info *info) evas_common_pipe_map_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thread_Info *info)
{ {
if (info) if (info)
{ {
@ -1469,22 +1469,22 @@ evas_common_pipe_map4_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Threa
evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h); evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h);
#endif #endif
evas_common_map4_rgba(op->op.map4.src, dst, evas_common_map_rgba(op->op.map.src, dst,
&context, op->op.map4.p, &context, op->op.map.npoints, op->op.map.p,
op->op.map4.smooth, op->op.map4.level); op->op.map.smooth, op->op.map.level);
} }
else else
{ {
evas_common_map4_rgba(op->op.map4.src, dst, evas_common_map_rgba(op->op.map.src, dst,
&(op->context), op->op.map4.p, &(op->context), op->op.map.npoints, op->op.map.p,
op->op.map4.smooth, op->op.map4.level); op->op.map.smooth, op->op.map.level);
} }
} }
EAPI void EAPI void
evas_common_pipe_map4_draw(RGBA_Image *src, RGBA_Image *dst, evas_common_pipe_map_draw(RGBA_Image *src, RGBA_Image *dst,
RGBA_Draw_Context *dc, RGBA_Map_Point *p, RGBA_Draw_Context *dc, int npoints, RGBA_Map_Point *p,
int smooth, int level) int smooth, int level)
{ {
RGBA_Pipe_Op *op; RGBA_Pipe_Op *op;
RGBA_Map_Point *pts_copy; RGBA_Map_Point *pts_copy;
@ -1503,8 +1503,9 @@ evas_common_pipe_map4_draw(RGBA_Image *src, RGBA_Image *dst,
for (i = 0; i < 4; ++i) for (i = 0; i < 4; ++i)
pts_copy[i] = p[i]; pts_copy[i] = p[i];
op->op.map4.smooth = smooth; op->op.map.npoints = npoints;
op->op.map4.level = level; op->op.map.smooth = smooth;
op->op.map.level = level;
#ifdef EVAS_FRAME_QUEUING #ifdef EVAS_FRAME_QUEUING
LKL(src->cache_entry.ref_fq_add); LKL(src->cache_entry.ref_fq_add);
src->cache_entry.ref_fq[0]++; src->cache_entry.ref_fq[0]++;
@ -1512,10 +1513,10 @@ evas_common_pipe_map4_draw(RGBA_Image *src, RGBA_Image *dst,
#else #else
src->ref++; src->ref++;
#endif #endif
op->op.map4.src = src; op->op.map.src = src;
op->op.map4.p = pts_copy; op->op.map.p = pts_copy;
op->op_func = evas_common_pipe_map4_draw_do; op->op_func = evas_common_pipe_map_draw_do;
op->free_func = evas_common_pipe_op_map4_free; op->free_func = evas_common_pipe_op_map_free;
evas_common_pipe_draw_context_copy(dc, op); evas_common_pipe_draw_context_copy(dc, op);
#ifdef EVAS_FRAME_QUEUING #ifdef EVAS_FRAME_QUEUING
@ -1533,7 +1534,7 @@ evas_common_pipe_map4_draw(RGBA_Image *src, RGBA_Image *dst,
} }
static void static void
evas_common_pipe_map4_render(RGBA_Image *root) evas_common_pipe_map_render(RGBA_Image *root)
{ {
RGBA_Pipe *p; RGBA_Pipe *p;
int i; int i;
@ -1543,15 +1544,15 @@ evas_common_pipe_map4_render(RGBA_Image *root)
{ {
for (i = 0; i < p->op_num; i++) for (i = 0; i < p->op_num; i++)
{ {
if (p->op[i].op_func == evas_common_pipe_map4_draw_do) if (p->op[i].op_func == evas_common_pipe_map_draw_do)
{ {
if (p->op[i].op.map4.src->cache_entry.pipe) if (p->op[i].op.map.src->cache_entry.pipe)
evas_common_pipe_map4_render(p->op[i].op.map4.src); evas_common_pipe_map_render(p->op[i].op.map.src);
} }
else if (p->op[i].op_func == evas_common_pipe_image_draw_do) else if (p->op[i].op_func == evas_common_pipe_image_draw_do)
{ {
if (p->op[i].op.image.src->cache_entry.pipe) if (p->op[i].op.image.src->cache_entry.pipe)
evas_common_pipe_map4_render(p->op[i].op.image.src); evas_common_pipe_map_render(p->op[i].op.image.src);
} }
} }
} }
@ -1706,7 +1707,7 @@ evas_common_pipe_image_load(RGBA_Image *im)
} }
EAPI void EAPI void
evas_common_pipe_map4_begin(RGBA_Image *root) evas_common_pipe_map_begin(RGBA_Image *root)
{ {
if (!evas_common_pipe_init()) if (!evas_common_pipe_init())
{ {
@ -1724,7 +1725,7 @@ evas_common_pipe_map4_begin(RGBA_Image *root)
evas_common_pipe_image_load_do(); evas_common_pipe_image_load_do();
evas_common_pipe_map4_render(root); evas_common_pipe_map_render(root);
} }
#endif #endif

View File

@ -97,7 +97,7 @@ EAPI void evas_common_pipe_image_load(RGBA_Image *im);
EAPI void evas_common_pipe_image_draw(RGBA_Image *src, RGBA_Image *dst, RGBA_Draw_Context *dc, int smooth, int src_region_x, int src_region_y, int src_region_w, int src_region_h, int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h); EAPI void evas_common_pipe_image_draw(RGBA_Image *src, RGBA_Image *dst, RGBA_Draw_Context *dc, int smooth, int src_region_x, int src_region_y, int src_region_w, int src_region_h, int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h);
EAPI void evas_common_pipe_map_begin(RGBA_Image *root); EAPI void evas_common_pipe_map_begin(RGBA_Image *root);
EAPI void evas_common_pipe_map_draw(RGBA_Image *src, RGBA_Image *dst, EAPI void evas_common_pipe_map_draw(RGBA_Image *src, RGBA_Image *dst,
RGBA_Draw_Context *dc, RGBA_Map_Point *p, RGBA_Draw_Context *dc, int npoints, RGBA_Map_Point *p,
int smooth, int level); int smooth, int level);
EAPI void evas_common_pipe_flush(RGBA_Image *im); EAPI void evas_common_pipe_flush(RGBA_Image *im);

View File

@ -722,9 +722,10 @@ struct _RGBA_Pipe_Op
struct { struct {
RGBA_Image *src; RGBA_Image *src;
RGBA_Map_Point *p; RGBA_Map_Point *p;
int npoints;
int smooth; int smooth;
int level; int level;
} map4; } map;
} op; } op;
}; };

View File

@ -562,7 +562,7 @@ eng_image_map_draw(void *data __UNUSED__, void *context, void *surface, void *im
if (npoints > 4) if (npoints > 4)
{ {
eng_image_map_draw(data, context, surface, image, npoints - 2, p + 2, eng_image_map_draw(data, context, surface, image, npoints - 2, p + 2,
smooth, level); smooth, level);
} }
} }