diff options
author | Marcel Hollerbach <mail@marcel-hollerbach.de> | 2019-12-09 18:26:31 +0100 |
---|---|---|
committer | Cedric BAIL <cedric.bail@free.fr> | 2019-12-11 11:11:05 -0800 |
commit | 42f56d0a0a77414db708dbb8b2d08ccc4aacab6f (patch) | |
tree | 5d6c9d3c4bdfe74115a2299c65da7570fcc4fb2b | |
parent | e097df41642cfb9a9ceb4dca5abcc56f275846f1 (diff) |
efl_ui_popup: do not leak the backwall part
freeing it in the destructor is not enough. This has to be done at the
invalidator stage, otherwise bindings might have a blocking element on
the screen for the time the object is not gargabe collected.
Reviewed-by: Jaehyun Cho <jae_hyun.cho@samsung.com>
Differential Revision: https://phab.enlightenment.org/D10837
-rw-r--r-- | src/lib/elementary/efl_ui_popup.c | 8 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_popup.eo | 1 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/lib/elementary/efl_ui_popup.c b/src/lib/elementary/efl_ui_popup.c index edf71073aa..da152b4062 100644 --- a/src/lib/elementary/efl_ui_popup.c +++ b/src/lib/elementary/efl_ui_popup.c | |||
@@ -568,9 +568,15 @@ _efl_ui_popup_efl_object_constructor(Eo *obj, Efl_Ui_Popup_Data *pd) | |||
568 | } | 568 | } |
569 | 569 | ||
570 | EOLIAN static void | 570 | EOLIAN static void |
571 | _efl_ui_popup_efl_object_destructor(Eo *obj, Efl_Ui_Popup_Data *pd) | 571 | _efl_ui_popup_efl_object_invalidate(Eo *obj, Efl_Ui_Popup_Data *pd) |
572 | { | 572 | { |
573 | ELM_SAFE_DEL(pd->backwall); | 573 | ELM_SAFE_DEL(pd->backwall); |
574 | efl_invalidate(efl_super(obj, MY_CLASS)); | ||
575 | } | ||
576 | |||
577 | EOLIAN static void | ||
578 | _efl_ui_popup_efl_object_destructor(Eo *obj, Efl_Ui_Popup_Data *pd) | ||
579 | { | ||
574 | _anchor_detach(obj, pd); | 580 | _anchor_detach(obj, pd); |
575 | 581 | ||
576 | efl_event_callback_del(pd->win_parent, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _parent_geom_cb, | 582 | efl_event_callback_del(pd->win_parent, EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _parent_geom_cb, |
diff --git a/src/lib/elementary/efl_ui_popup.eo b/src/lib/elementary/efl_ui_popup.eo index 322a7f8faf..66d8829f96 100644 --- a/src/lib/elementary/efl_ui_popup.eo +++ b/src/lib/elementary/efl_ui_popup.eo | |||
@@ -125,6 +125,7 @@ class Efl.Ui.Popup extends Efl.Ui.Layout_Base implements Efl.Content, Efl.Ui.Foc | |||
125 | implements { | 125 | implements { |
126 | Efl.Object.constructor; | 126 | Efl.Object.constructor; |
127 | Efl.Object.destructor; | 127 | Efl.Object.destructor; |
128 | Efl.Object.invalidate; | ||
128 | Efl.Canvas.Group.group_calculate; | 129 | Efl.Canvas.Group.group_calculate; |
129 | Efl.Gfx.Entity.position { set; } | 130 | Efl.Gfx.Entity.position { set; } |
130 | Efl.Gfx.Entity.size { set;} | 131 | Efl.Gfx.Entity.size { set;} |