diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c index db572b4840..7cc6c035ec 100644 --- a/src/lib/evas/canvas/evas_object_image.c +++ b/src/lib/evas/canvas/evas_object_image.c @@ -3254,7 +3254,8 @@ _proxy_subrender(Evas *eo_e, Evas_Object *eo_source, Eina_Bool do_async) evas_render_mapped(e, eo_source, source, ctx, proxy_write->surface, -source->cur->geometry.x, -source->cur->geometry.y, - 1, 0, 0, e->output.w, e->output.h, EINA_TRUE + 1, 0, 0, e->output.w, e->output.h, EINA_TRUE, + EINA_TRUE #ifdef REND_DBG , 1 #endif diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index 97083e4943..d3f31cda33 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -950,7 +950,8 @@ Eina_Bool evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *context, void *surface, int off_x, int off_y, int mapped, int ecx, - int ecy, int ecw, int ech, Eina_Bool proxy_render + int ecy, int ecw, int ech, Eina_Bool proxy_render, + Eina_Bool proxy_src_clip #ifdef REND_DBG , int level #endif @@ -971,7 +972,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj, { if (obj->clip.clipees || obj->cur->have_clipees) { - if (!proxy_render) + if (!proxy_render || proxy_src_clip) { if (!evas_object_is_visible(eo_obj, obj)) { @@ -1132,7 +1133,8 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj, obj->map->surface, off_x2, off_y2, 1, ecx, ecy, ecw, ech, - proxy_render + proxy_render, + proxy_src_clip #ifdef REND_DBG , level + 1 #endif @@ -1263,7 +1265,8 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj, obj2, ctx, surface, off_x, off_y, 1, ecx, ecy, ecw, ech, - proxy_render + proxy_render, + proxy_src_clip #ifdef REND_DBG , level + 1 #endif @@ -1275,7 +1278,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj, RDI(level); //FIXME: Consider to clip by the proxy clipper. - if (!proxy_render && obj->cur->clipper) + if ((!proxy_render || proxy_src_clip) && obj->cur->clipper) { RD(" clip: %i %i %ix%i [%i %i %ix%i]\n", obj->cur->cache.clip.x + off_x, @@ -1320,7 +1323,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj, else { //FIXME: Consider to clip by the proxy clipper. - if (!proxy_render && obj->cur->clipper) + if ((!proxy_render || proxy_src_clip) && obj->cur->clipper) { int x, y, w, h; @@ -1742,6 +1745,7 @@ evas_render_updates_internal(Evas *eo_e, surface, off_x, off_y, 0, cx, cy, cw, ch, + EINA_FALSE, EINA_FALSE #ifdef REND_DBG , 1 diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index 9defa266f6..1a03c2990e 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -1239,7 +1239,7 @@ Eina_Bool evas_render_mapped(Evas_Public_Data *e, Evas_Object *obj, Evas_Object_Protected_Data *source_pd, void *context, void *surface, int off_x, int off_y, int mapped, int ecx, int ecy, int ecw, int ech, - Eina_Bool proxy_render + Eina_Bool proxy_render, Eina_Bool proxy_src_clip #ifdef REND_DBG , int level #endif