redo start/syscon menu deactivate callbacks to not crash

fix T1448
This commit is contained in:
Mike Blumenkrantz 2014-07-27 17:40:53 -04:00
parent e33fa813c2
commit fb3f852601
2 changed files with 14 additions and 10 deletions

View File

@ -296,15 +296,17 @@ _button_cb_mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED_
} }
static void 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; 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); e_gadcon_locked_set(inst->gcc->gadcon, 0);
edje_object_signal_emit(inst->o_button, "e,state,unfocused", "e"); edje_object_signal_emit(inst->o_button, "e,state,unfocused", "e");
e_object_del(E_OBJECT(inst->main_menu));
inst->main_menu = NULL; inst->main_menu = NULL;
} }

View File

@ -226,14 +226,16 @@ _cb_shutdown_show(void *data, Evas_Object *obj __UNUSED__, const char *emission
} }
static void 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 (stopping || (!inst->menu)) return;
if (!inst->menu) return; fin = m == inst->menu;
e_gadcon_locked_set(inst->gcc->gadcon, EINA_FALSE); e_object_del(E_OBJECT(m));
e_object_del(E_OBJECT(inst->menu)); if (!fin) return;
e_gadcon_locked_set(inst->gcc->gadcon, 0);
inst->menu = NULL; inst->menu = NULL;
} }