ephysics: delete all worlds on exit

sure, it won't work until externals init / shutdown mess is fixed.



SVN revision: 77458
This commit is contained in:
Bruno Dilly 2012-10-04 22:38:58 +00:00
parent 6181303ab5
commit 7b7bef6087
9 changed files with 28 additions and 26 deletions

View File

@ -72,7 +72,7 @@ _win_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __
} }
static void static void
_subwin_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) _subwin_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ {
test_data_del(data); test_data_del(data);
ephysics_shutdown(); ephysics_shutdown();
@ -157,8 +157,8 @@ test_win_add(Test_Data *test_data, const char *title, Eina_Bool autodel)
evas_object_show(win); evas_object_show(win);
test_data->win = win; test_data->win = win;
if (autodel) if (autodel)
evas_object_smart_callback_add(win, "delete,request", _subwin_del, evas_object_event_callback_add(win, EVAS_CALLBACK_DEL,
test_data); _subwin_del_cb, test_data);
ly = elm_layout_add(win); ly = elm_layout_add(win);
elm_win_resize_object_add(win, ly); elm_win_resize_object_add(win, ly);
@ -196,6 +196,7 @@ _main_win_add(char *autorun)
win = elm_win_add(NULL, "main", ELM_WIN_BASIC); win = elm_win_add(NULL, "main", ELM_WIN_BASIC);
elm_win_title_set(win, "EPhysics Tests"); elm_win_title_set(win, "EPhysics Tests");
evas_object_smart_callback_add(win, "delete,request", _win_del, NULL); evas_object_smart_callback_add(win, "delete,request", _win_del, NULL);
elm_win_autodel_set(win, EINA_TRUE);
evas_object_resize(win, 460, 560); evas_object_resize(win, 460, 560);
evas_object_show(win); evas_object_show(win);

View File

@ -137,7 +137,7 @@ _world_populate(Camera_Data *camera_data)
} }
static void static void
_win_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) _win_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ {
Camera_Data *camera_data = data; Camera_Data *camera_data = data;
@ -196,7 +196,7 @@ test_camera(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
} }
test_win_add((Test_Data *)camera_data, "Camera", EINA_FALSE); test_win_add((Test_Data *)camera_data, "Camera", EINA_FALSE);
evas_object_smart_callback_add(camera_data->base.win, "delete,request", evas_object_event_callback_add(camera_data->base.win, EVAS_CALLBACK_DEL,
_win_del, camera_data); _win_del, camera_data);
elm_layout_signal_callback_add(camera_data->base.layout, "restart", elm_layout_signal_callback_add(camera_data->base.layout, "restart",

View File

@ -161,7 +161,7 @@ _restart(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED_
} }
static void static void
_win_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) _win_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ {
Track_Data *track_data = data; Track_Data *track_data = data;
@ -192,8 +192,8 @@ test_camera_track(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *even
} }
test_win_add((Test_Data *) track_data, "Camera Track", EINA_FALSE); test_win_add((Test_Data *) track_data, "Camera Track", EINA_FALSE);
evas_object_smart_callback_add(track_data->base.win, evas_object_event_callback_add(track_data->base.win, EVAS_CALLBACK_DEL,
"delete,request", _win_del, track_data); _win_del, track_data);
elm_layout_signal_callback_add(track_data->base.layout, "restart", elm_layout_signal_callback_add(track_data->base.layout, "restart",
"test-theme", _restart, track_data); "test-theme", _restart, track_data);

View File

@ -127,7 +127,7 @@ _restart(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED_
} }
static void static void
_win_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) _win_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ {
Collision_Data *collision_data = data; Collision_Data *collision_data = data;
@ -159,8 +159,8 @@ test_collision(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i
test_win_add((Test_Data *)collision_data, "Collision Detection", EINA_FALSE); test_win_add((Test_Data *)collision_data, "Collision Detection", EINA_FALSE);
elm_object_signal_emit(collision_data->base.layout, "borders,show", elm_object_signal_emit(collision_data->base.layout, "borders,show",
"ephysics_test"); "ephysics_test");
evas_object_smart_callback_add(collision_data->base.win, evas_object_event_callback_add(collision_data->base.win, EVAS_CALLBACK_DEL,
"delete,request", _win_del, collision_data); _win_del, collision_data);
elm_layout_signal_callback_add(collision_data->base.layout, "restart", elm_layout_signal_callback_add(collision_data->base.layout, "restart",
"test-theme", _restart, collision_data); "test-theme", _restart, collision_data);

View File

@ -72,7 +72,7 @@ _restart(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED_
} }
static void static void
_win_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) _win_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ {
Speed_Data *speed_data = data; Speed_Data *speed_data = data;
@ -106,8 +106,8 @@ test_collision_speed(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *e
EINA_FALSE); EINA_FALSE);
elm_object_signal_emit(speed_data->base.layout, "borders,show", elm_object_signal_emit(speed_data->base.layout, "borders,show",
"ephysics_test"); "ephysics_test");
evas_object_smart_callback_add(speed_data->base.win, evas_object_event_callback_add(speed_data->base.win, EVAS_CALLBACK_DEL,
"delete,request", _win_del, speed_data); _win_del, speed_data);
elm_layout_signal_callback_add(speed_data->base.layout, "restart", elm_layout_signal_callback_add(speed_data->base.layout, "restart",
"test-theme", _restart, speed_data); "test-theme", _restart, speed_data);

View File

@ -135,7 +135,7 @@ _restart(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED_
} }
static void static void
_win_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) _win_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ {
Collision_Data *collision_data = data; Collision_Data *collision_data = data;
@ -165,8 +165,8 @@ test_delete(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
} }
test_win_add((Test_Data *)collision_data, "Delete Body", EINA_FALSE); test_win_add((Test_Data *)collision_data, "Delete Body", EINA_FALSE);
evas_object_smart_callback_add(collision_data->base.win, evas_object_event_callback_add(collision_data->base.win, EVAS_CALLBACK_DEL,
"delete,request", _win_del, collision_data); _win_del, collision_data);
elm_object_signal_emit(collision_data->base.layout, "borders,show", elm_object_signal_emit(collision_data->base.layout, "borders,show",
"ephysics_test"); "ephysics_test");
elm_layout_signal_callback_add(collision_data->base.layout, "restart", elm_layout_signal_callback_add(collision_data->base.layout, "restart",

View File

@ -58,7 +58,7 @@ _world_populate(Test_Data *test_data)
} }
static void static void
_win_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) _win_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ {
Test_Data *test_data = data; Test_Data *test_data = data;
Ecore_Timer *timer = test_data->data; Ecore_Timer *timer = test_data->data;
@ -96,8 +96,8 @@ test_growing_balls(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *eve
test_data = test_data_new(); test_data = test_data_new();
test_win_add(test_data, "Growing Balls", EINA_FALSE); test_win_add(test_data, "Growing Balls", EINA_FALSE);
evas_object_smart_callback_add(test_data->win, "delete,request", _win_del, evas_object_event_callback_add(test_data->win, EVAS_CALLBACK_DEL,
test_data); _win_del, test_data);
elm_object_signal_emit(test_data->layout, "borders,show", "ephysics_test"); elm_object_signal_emit(test_data->layout, "borders,show", "ephysics_test");
elm_layout_signal_callback_add(test_data->layout, "restart", "test-theme", elm_layout_signal_callback_add(test_data->layout, "restart", "test-theme",

View File

@ -138,7 +138,7 @@ _restart(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED_
} }
static void static void
_win_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) _win_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ {
Velocity_Data *velocity_data = data; Velocity_Data *velocity_data = data;
@ -148,6 +148,7 @@ _win_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
free(velocity_data); free(velocity_data);
ephysics_shutdown(); ephysics_shutdown();
} }
void void
test_velocity(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) test_velocity(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ {
@ -167,8 +168,8 @@ test_velocity(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
} }
test_win_add((Test_Data *)velocity_data, "Velocity Getters", EINA_FALSE); test_win_add((Test_Data *)velocity_data, "Velocity Getters", EINA_FALSE);
evas_object_smart_callback_add(velocity_data->base.win, evas_object_event_callback_add(velocity_data->base.win, EVAS_CALLBACK_DEL,
"delete,request", _win_del, velocity_data); _win_del, velocity_data);
elm_layout_signal_callback_add(velocity_data->base.layout, "restart", elm_layout_signal_callback_add(velocity_data->base.layout, "restart",
"test-theme", _restart, velocity_data); "test-theme", _restart, velocity_data);

View File

@ -12,7 +12,7 @@ struct _Old_Rate {
}; };
static void static void
_del_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) _win_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ {
free(data); free(data);
} }
@ -175,8 +175,8 @@ test_win_resize(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_
evas_object_size_hint_weight_set(test_data->layout, EVAS_HINT_EXPAND, evas_object_size_hint_weight_set(test_data->layout, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND); EVAS_HINT_EXPAND);
elm_win_aspect_set(test_data->win, (double) WIDTH / HEIGHT); elm_win_aspect_set(test_data->win, (double) WIDTH / HEIGHT);
evas_object_smart_callback_add(test_data->win, "delete,request", _del_cb, evas_object_event_callback_add(test_data->win, EVAS_CALLBACK_DEL,
test_data->data); _win_del, test_data->data);
world = ephysics_world_new(); world = ephysics_world_new();
ephysics_world_render_geometry_set(world, 50, 40, WIDTH - 100, FLOOR_Y - 40); ephysics_world_render_geometry_set(world, 50, 40, WIDTH - 100, FLOOR_Y - 40);