efbb: don't try to delete already deleted evas objs

These objs are deleted on shutdown before body obj callback
is called.



SVN revision: 77473
This commit is contained in:
Bruno Dilly 2012-10-04 22:41:28 +00:00
parent 60c3b3589c
commit 46991342bb
2 changed files with 8 additions and 17 deletions

View File

@ -23,6 +23,7 @@
#define INFINITE_HP (9000) //ITS OVER NINE THOUSAND!!
int _efbb_log_dom = -1;
static Eina_Bool _quit = EINA_FALSE;
struct _Game {
Evas_Object *main_screen;
@ -87,6 +88,9 @@ _body_del(void *data, EPhysics_Body *body, void *event_info)
_relto_del_cb);
free(body_data);
}
if (_quit) return;
if (event_info) evas_object_del(event_info);
if (data) evas_object_del(data);
}
@ -1136,27 +1140,14 @@ _levels_unload(Game *game)
game_world_shutdown();
}
static void
_win_del(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
Game *game = data;
DBG("Request to close window");
if (game->cur_world)
ephysics_world_del(game->cur_world);
evas_object_del(obj);
}
static Evas_Object *
_win_add(Game *game)
_win_add(void)
{
Evas_Object *win;
win = elm_win_add(NULL, PACKAGE_NAME, ELM_WIN_BASIC);
elm_win_title_set(win, "Escape From Booty Bay");
evas_object_smart_callback_add(win, "delete,request", _win_del, game);
elm_win_autodel_set(win, EINA_TRUE);
elm_win_screen_constrain_set(win, EINA_TRUE);
evas_object_show(win);
@ -1267,7 +1258,7 @@ elm_main(int argc __UNUSED__, char **argv __UNUSED__)
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
elm_theme_extension_add(NULL, PACKAGE_DATA_DIR "/" GAME_THEME ".edj");
game->win = _win_add(game);
game->win = _win_add();
game->main_screen = main_screen_add(game->win, game);
game->evas = evas_object_evas_get(game->win);
game->level_select_screen = level_select_screen_add(
@ -1296,6 +1287,7 @@ etrophy_shutdown:
end:
eina_log_domain_unregister(_efbb_log_dom);
_efbb_log_dom = -1;
_quit = EINA_TRUE;
elm_shutdown();
return r;

View File

@ -18,7 +18,6 @@ _exit_cb(void *data, Evas_Object *obj __UNUSED__,
{
Evas_Object *win = data;
evas_object_del(win);
elm_exit();
}
Evas_Object *