jpeg pushed a commit to branch master.

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

commit 1bfce47bf338428b71393722930d4e948ee19ad0
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Mon Mar 6 16:45:24 2017 +0900

    evas: Fix non-disappearance of text entry cursor
    
    The mouse cursor in a text entry tends to not disappear even when
    the mouse moves out of the entry. This seems to happen more when
    the cursor was visible for a single frame only (although I'm not
    100% sure about this condition).
    
    One important difference with previous versions of EFL is that
    the cursor is now part of the theme, so it is an image object
    and not set by the compositor (it looks vastly different).
    
    Anyway, when processing the list of pending_objects, we look at
    the flags render_pre and rect_del which were (re)set during the
    previous frame. Those flags are then (re)set during phase 1 which
    happens after processing the pending objects list... only if
    needed. So, phase 1 sets the condition to invalidate the current
    lists of objects but that condition is checked for before phase 1.
    
    This patch adds a check on delete_me which should hopefully make
    it a rare enough case, for performance, but still force correct
    rendering.
    
    This is all spaghetti code, sorry if this explanation also reads
    like pasta.
    
    Note that exactness tests may still be broken because earlier
    versions of EFL simply did not have the cursor inside the canvas
    itself.
    
    Fixes T5231
---
 src/lib/evas/canvas/evas_render.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index 00c2f6b..e612437 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -1251,7 +1251,7 @@ _evas_render_check_pending_objects(Eina_Array 
*pending_objects, Evas *eo_e EINA_
                         (_evas_render_can_render(eo_obj, obj) ||
                          (evas_object_was_visible(eo_obj, obj) && 
(!obj->prev->have_clipees))))
                       {
-                         if (!(obj->render_pre || obj->rect_del))
+                         if (!obj->render_pre && !obj->rect_del && 
!obj->delete_me)
                            ok = EINA_TRUE;
                       }
                     else

-- 


Reply via email to