cedric pushed a commit to branch master.

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

commit 5d651d523bd8d883b76e14953339e1fb80be7021
Author: Shinwoo Kim <[email protected]>
Date:   Thu Feb 21 06:57:17 2019 +0000

    evas_object_image: render_post returns if preloading.
    
    The render_post calls evas_object_change if o->changed is true which is 
added
    by commit "36fc2e6 evas image: fix non-rendered preload image.".
    But an image could lose chance to render. Please refer to the following.
    
    (1) 1st render_updates_internal
      render_post - evas_object_change for image and its parents
      evas_object_reset - for its parent
    
    (2) _evas_image_load_post_update - o->preload is changed to true here
    
    (3) 2nd render_updates_internal
      evas_render_mapped cannot call render
    
    The reason of (3) would be unchanged parents.
    
    If render_post returns if an image is preloading, then evas_object_change 
works
    for the image and its parents at (2). And finally (3) will call render.
    It would be reasonable because render_pre, and render returns as well.
    
    Reviewed-by: Cedric BAIL <[email protected]>
    Differential Revision: https://phab.enlightenment.org/D7973
---
 src/lib/evas/canvas/evas_object_image.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/lib/evas/canvas/evas_object_image.c 
b/src/lib/evas/canvas/evas_object_image.c
index 02ec6493dd..03d37df5a4 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -2703,6 +2703,9 @@ evas_object_image_render_post(Evas_Object *eo_obj 
EINA_UNUSED,
    Evas_Image_Data *o = type_private_data;
    Eina_Rectangle *r;
 
+   /* image is not ready yet, skip rendering. Leave it to next frame */
+   if (o->preload & EVAS_IMAGE_PRELOADING) return;
+
    /* this moves the current data to the previous state parts of the object */
    /* in whatever way is safest for the object. also if we don't need object */
    /* data anymore we can free it if the object deems this is a good idea */

-- 


Reply via email to