From 595e8c819577f57edcab98e13bff5efc876b96c2 Mon Sep 17 00:00:00 2001 From: Bruno Dilly Date: Fri, 10 Aug 2012 21:03:01 +0000 Subject: [PATCH] EPhysics: use inlist for worlds list SVN revision: 75138 --- legacy/ephysics/src/lib/ephysics_world.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/legacy/ephysics/src/lib/ephysics_world.cpp b/legacy/ephysics/src/lib/ephysics_world.cpp index af1a043550..952c100cdf 100644 --- a/legacy/ephysics/src/lib/ephysics_world.cpp +++ b/legacy/ephysics/src/lib/ephysics_world.cpp @@ -20,6 +20,7 @@ struct _EPhysics_World_Callback { }; struct _EPhysics_World { + EINA_INLIST; btBroadphaseInterface* broadphase; btDefaultCollisionConfiguration* collision; btCollisionDispatcher* dispatcher; @@ -47,7 +48,7 @@ struct _EPhysics_World { static int _ephysics_world_init_count = 0; static int _worlds_running = 0; -static Eina_List *_worlds = NULL; +static Eina_Inlist *_worlds = NULL; static Ecore_Animator *_anim_simulate = NULL; struct _ephysics_world_ovelap_filter_cb : public btOverlapFilterCallback @@ -126,14 +127,13 @@ _ephysics_world_tick_cb(btDynamicsWorld *dynamics_world, btScalar timeStep) static Eina_Bool _simulate_worlds(void *data) { - Eina_List *l, *lworlds = (Eina_List *) data; + Eina_Inlist *lworlds = (Eina_Inlist *) data; + EPhysics_World *world; double time_now; - void *ldata; - EINA_LIST_FOREACH(lworlds, l, ldata) + EINA_INLIST_FOREACH(lworlds, world) { double time_now, delta; - EPhysics_World *world = (EPhysics_World *) ldata; if (!world->running) continue; @@ -232,8 +232,6 @@ ephysics_world_init(void) int ephysics_world_shutdown(void) { - void *ldata; - if (--_ephysics_world_init_count != 0) return _ephysics_world_init_count; @@ -243,9 +241,11 @@ ephysics_world_shutdown(void) _anim_simulate = NULL; } - EINA_LIST_FREE(_worlds, ldata) + while (_worlds) { - EPhysics_World *world = (EPhysics_World *) ldata; + EPhysics_World *world = EINA_INLIST_CONTAINER_GET( + _worlds, EPhysics_World); + _worlds = eina_inlist_remove(_worlds, _worlds); ephysics_world_del(world); } @@ -327,7 +327,7 @@ ephysics_world_new(void) goto no_world; } - _worlds = eina_list_append(_worlds, world); + _worlds = eina_inlist_append(_worlds, EINA_INLIST_GET(world)); if (eina_error_get()) { ERR("Couldn't add world to worlds list."); @@ -435,7 +435,7 @@ ephysics_world_del(EPhysics_World *world) } ephysics_world_running_set(world, EINA_FALSE); - _worlds = eina_list_remove(_worlds, world); + _worlds = eina_inlist_remove(_worlds, EINA_INLIST_GET(world)); while (world->callbacks) {