From: raster Date: Tue, 26 Jan 2010 08:16:36 +0000 (+0000) Subject: fastpath for map that are... well.. not mapped. X-Git-Tag: accepted/2.0/20130306.225542~242^2~2088 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d3479d84ba4ca66e951bb32f5b97f301e66f6213;p=profile%2Fivi%2Fevas.git fastpath for map that are... well.. not mapped. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@45574 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/lib/canvas/evas_render.c b/src/lib/canvas/evas_render.c index 6b47575..67701b5 100644 --- a/src/lib/canvas/evas_render.c +++ b/src/lib/canvas/evas_render.c @@ -724,12 +724,40 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface, e->engine.func->context_free(e->engine.data.output, ctx); } - RDI(level); + RDI(level); RD(" draw map4\n"); - obj->layer->evas->engine.func->image_map4_draw - (e->engine.data.output, e->engine.data.context, surface, - obj->cur.map->surface, pts, obj->cur.map->smooth, 0); + if ((pts[0].x == pts[3].x) && + (pts[1].x == pts[2].x) && + (pts[0].y == pts[1].y) && + (pts[3].y == pts[2].y) && + (pts[0].u == 0) && + (pts[0].v == 0) && + (pts[1].u == (obj->cur.map->surface_w << FP)) && + (pts[1].v == 0) && + (pts[2].u == (obj->cur.map->surface_w << FP)) && + (pts[2].v == (obj->cur.map->surface_h << FP)) && + (pts[3].u == 0) && + (pts[3].v == (obj->cur.map->surface_h << FP))) + { + int dx, dy, dw, dh; + + dx = pts[0].x >> FP; + dy = pts[0].y >> FP; + dw = (pts[2].x >> FP) - dx; + dh = (pts[2].y >> FP) - dy; + obj->layer->evas->engine.func->image_draw + (e->engine.data.output, e->engine.data.context, + surface, obj->cur.map->surface, + 0, 0, obj->cur.map->surface_w, obj->cur.map->surface_h, + dx, dy, dw, dh, obj->cur.map->smooth); + } + else + { + obj->layer->evas->engine.func->image_map4_draw + (e->engine.data.output, e->engine.data.context, surface, + obj->cur.map->surface, pts, obj->cur.map->smooth, 0); + } // FIXME: needs to cache these maps and // keep them only rendering updates // obj->layer->evas->engine.func->image_map_surface_free