elementary conformant: clear internal pointer if holded object is deleted

Summary:
Set sd->scroller as NULL when the scroller object is deleted.
It prevents error logs when elm_conform tries to delete resize callback
function from deleted object.
@fix

Test Plan: N/A

Reviewers: raster, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4519
This commit is contained in:
Youngbok Shin 2017-01-22 11:03:14 +09:00 committed by Carsten Haitzler (Rasterman)
parent 6e8b628864
commit ca075ce21f
1 changed files with 20 additions and 4 deletions

View File

@ -693,6 +693,15 @@ _on_content_resize(void *data,
sd->show_region_job = ecore_job_add(_show_region_job, data);
}
static void
_on_top_scroller_del(void *data, const Efl_Event *event)
{
ELM_CONFORMANT_DATA_GET(data, sd);
if (event->object == sd->scroller)
sd->scroller = NULL;
}
#endif
#ifdef HAVE_ELEMENTARY_X
@ -721,13 +730,20 @@ _autoscroll_objects_update(void *data)
if (top_scroller != sd->scroller)
{
if (sd->scroller)
evas_object_event_callback_del
(sd->scroller, EVAS_CALLBACK_RESIZE, _on_content_resize);
{
evas_object_event_callback_del_full
(sd->scroller, EVAS_CALLBACK_RESIZE, _on_content_resize, data);
efl_event_callback_del(sd->scroller, EFL_EVENT_DEL, _on_top_scroller_del, data);
}
sd->scroller = top_scroller;
if (sd->scroller)
evas_object_event_callback_add
(sd->scroller, EVAS_CALLBACK_RESIZE, _on_content_resize, data);
{
evas_object_event_callback_add
(sd->scroller, EVAS_CALLBACK_RESIZE, _on_content_resize, data);
efl_event_callback_add(sd->scroller, EFL_EVENT_DEL, _on_top_scroller_del, data);
}
}
}