From: Jean-Philippe Andre Date: Mon, 6 Mar 2017 07:45:24 +0000 (+0900) Subject: evas: Fix non-disappearance of text entry cursor X-Git-Tag: upstream/1.20.0~1812 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1bfce47bf338428b71393722930d4e948ee19ad0;p=platform%2Fupstream%2Fefl.git 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 --- 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