From fb3f852601e4f360a129f5ff26faf779e39045dc Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Sun, 27 Jul 2014 17:40:53 -0400 Subject: [PATCH] redo start/syscon menu deactivate callbacks to not crash fix T1448 --- src/modules/start/e_mod_main.c | 10 ++++++---- src/modules/syscon/e_syscon_gadget.c | 14 ++++++++------ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/modules/start/e_mod_main.c b/src/modules/start/e_mod_main.c index 8b27e47be..84aba840e 100644 --- a/src/modules/start/e_mod_main.c +++ b/src/modules/start/e_mod_main.c @@ -296,15 +296,17 @@ _button_cb_mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED_ } static void -_menu_cb_post(void *data, E_Menu *m __UNUSED__) +_menu_cb_post(void *data, E_Menu *m) { - Instance *inst; + Instance *inst = data; + Eina_Bool fin; - inst = data; if (stopping || (!inst->main_menu)) return; + fin = m == inst->main_menu; + e_object_del(E_OBJECT(m)); + if (!fin) return; e_gadcon_locked_set(inst->gcc->gadcon, 0); edje_object_signal_emit(inst->o_button, "e,state,unfocused", "e"); - e_object_del(E_OBJECT(inst->main_menu)); inst->main_menu = NULL; } diff --git a/src/modules/syscon/e_syscon_gadget.c b/src/modules/syscon/e_syscon_gadget.c index 8c72a0445..b80916945 100644 --- a/src/modules/syscon/e_syscon_gadget.c +++ b/src/modules/syscon/e_syscon_gadget.c @@ -226,14 +226,16 @@ _cb_shutdown_show(void *data, Evas_Object *obj __UNUSED__, const char *emission } static void -_cb_menu_post(void *data, E_Menu *m __UNUSED__) +_cb_menu_post(void *data, E_Menu *m) { - Instance *inst; + Instance *inst = data; + Eina_Bool fin; - if (!(inst = data)) return; - if (!inst->menu) return; - e_gadcon_locked_set(inst->gcc->gadcon, EINA_FALSE); - e_object_del(E_OBJECT(inst->menu)); + if (stopping || (!inst->menu)) return; + fin = m == inst->menu; + e_object_del(E_OBJECT(m)); + if (!fin) return; + e_gadcon_locked_set(inst->gcc->gadcon, 0); inst->menu = NULL; }