src/scene.c

changeset 76
eb16be99b0ad
parent 75
0ce353485509
equal deleted inserted replaced
75:0ce353485509 76:eb16be99b0ad
176 render_iter = cxListIterator(render_group[ASC_RENDER_GROUP_SPRITE_BLEND]); 176 render_iter = cxListIterator(render_group[ASC_RENDER_GROUP_SPRITE_BLEND]);
177 cx_foreach(AscSprite const *, node, render_iter) { 177 cx_foreach(AscSprite const *, node, render_iter) {
178 asc_sprite_draw(node); 178 asc_sprite_draw(node);
179 } 179 }
180 180
181 // destroy render groups 181 // deallocate render groups
182 cx_for_n(i, ASC_RENDER_GROUP_COUNT) { 182 cx_for_n(i, ASC_RENDER_GROUP_COUNT) {
183 cxListDestroy(render_group[i]); 183 cxListFree(render_group[i]);
184 } 184 }
185 } 185 }
186 186
187 AscSceneNode *asc_scene_node_empty(void) { 187 AscSceneNode *asc_scene_node_empty(void) {
188 AscSceneNode *node = calloc(1, sizeof(AscSceneNode)); 188 AscSceneNode *node = calloc(1, sizeof(AscSceneNode));
202 // free the entire subtree 202 // free the entire subtree
203 CxTreeIterator iter = asc_scene_node_iterator(node, true); 203 CxTreeIterator iter = asc_scene_node_iterator(node, true);
204 cx_foreach(AscSceneNode*, child, iter) { 204 cx_foreach(AscSceneNode*, child, iter) {
205 if (!iter.exiting) continue; 205 if (!iter.exiting) continue;
206 if (child->behaviors != NULL) { 206 if (child->behaviors != NULL) {
207 cxListDestroy(child->behaviors); 207 cxListFree(child->behaviors);
208 } 208 }
209 if (child->free_func != NULL) { 209 if (child->free_func != NULL) {
210 child->free_func(child); 210 child->free_func(child);
211 } else { 211 } else {
212 free(child); 212 free(child);

mercurial