jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=cfedba598c23844946c5af2e038870c7ca6befdc

commit cfedba598c23844946c5af2e038870c7ca6befdc
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Tue Oct 13 22:13:48 2015 +0900

    Evas render: Fix proxy source_clip with source images
    
    In case the source is an Evas_Image, we skip proxy_subrender,
    and so the clip was not set against the source clip.
---
 src/lib/evas/canvas/evas_object_image.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/lib/evas/canvas/evas_object_image.c 
b/src/lib/evas/canvas/evas_object_image.c
index a16562b..0a525ba 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -3291,7 +3291,7 @@ _evas_image_render(Eo *eo_obj, Evas_Object_Protected_Data 
*obj,
                    int l, int t, int r, int b, Eina_Bool do_async)
 {
    Evas_Image_Data *o = obj->private_data, *oi = NULL;
-   int imagew, imageh, uvw, uvh;
+   int imagew, imageh, uvw, uvh, cw, ch;
    void *pixels;
 
    Evas_Object_Protected_Data *source =
@@ -3349,6 +3349,15 @@ _evas_image_render(Eo *eo_obj, 
Evas_Object_Protected_Data *obj,
         imageh = oi->cur->image.h;
         uvw = source->cur->geometry.w;
         uvh = source->cur->geometry.h;
+        /* check source_clip since we skip proxy_subrender here */
+        if (o->proxy_src_clip)
+          {
+             ENFN->context_clip_clip(ENDT, context,
+                                     source->cur->cache.clip.x + x,
+                                     source->cur->cache.clip.y + y,
+                                     source->cur->cache.clip.w,
+                                     source->cur->cache.clip.h);
+          }
      }
    else
      {
@@ -3363,6 +3372,9 @@ _evas_image_render(Eo *eo_obj, Evas_Object_Protected_Data 
*obj,
         o->proxyrendering = EINA_FALSE;
      }
 
+   ENFN->context_clip_get(ENDT, context, NULL, NULL, &cw, &ch);
+   if (!cw || !ch) return;
+
    if (pixels)
      {
         Evas_Coord idw, idh, idx, idy;

-- 


Reply via email to