From: Godly T.Alias Date: Tue, 14 Apr 2020 06:00:37 +0000 (+0530) Subject: [Genlist] Safety checks to avoid crashes X-Git-Tag: submit/tizen/20200417.234115~9 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=79bb3a176ec0df964394634380f357ed467edb70;p=platform%2Fupstream%2Fefl.git [Genlist] Safety checks to avoid crashes Change-Id: Ic951e1382b7e82488b82a2cec042bb0ab50b026c Signed-off-by: Yukti Pandey --- diff --git a/src/lib/elementary_tizen/elm_genlist.c b/src/lib/elementary_tizen/elm_genlist.c index 843887316f..a36a834f05 100644 --- a/src/lib/elementary_tizen/elm_genlist.c +++ b/src/lib/elementary_tizen/elm_genlist.c @@ -1532,8 +1532,21 @@ _elm_genlist_scroll_item_align_highlight_cb(Evas_Object *obj, void *data EINA_UN if (sd->aligned_item) { + //TIZEN_ONLY(20200414): Codes for safety check + Elm_Gen_Item *temp = sd->aligned_item; + // + evas_object_smart_callback_call(WIDGET(sd->aligned_item), SIG_ALIGNED_ITEM_DETECTED, EO_OBJ(sd->aligned_item)); + //TIZEN_ONLY(20200414): During callback application can trigger item update + //operations which can reset align item for doing self align operation again + if (temp != sd->aligned_item) + { + ERR("Item update operations are not allowed in aligned,item,detected callback"); + return; + } + // + if (sd->aligned_item->selected && sd->aligned_item == sd->selecting_item) { if (GL_IT(sd->aligned_item)->highlight_timer) @@ -3264,6 +3277,10 @@ _elm_genlist_pan_efl_canvas_group_group_calculate(Eo *obj, Elm_Genlist_Pan_Data // TIZEN_ONLY(20161230): Optimization for application launch on item show scenario if (psd->wsd->aligned_item) { + //TIZEN_ONLY(20200414): During callback application can trigger item update + //operations which can reset align item for doing self align operation again + edje_object_signal_emit(VIEW(psd->wsd->aligned_item), SIGNAL_ITEM_UNHIGHLIGHTED, "elm"); + // evas_object_smart_callback_call(WIDGET(psd->wsd->aligned_item), SIG_ALIGNED_ITEM_DETECTED, NULL); edje_object_signal_emit(VIEW(psd->wsd->aligned_item), SIGNAL_ITEM_UNHIGHLIGHTED, "elm"); psd->wsd->aligned_item = NULL;