diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2014-05-30 20:24:03 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2014-05-30 20:24:03 -0400 |
commit | 1de647b9d38528b640f8da473d50c04ef0674c58 (patch) | |
tree | c2b4ae1234a4d20142ab70b6e27030082b10b13d /libdimension/scene.c | |
parent | 72daebf48e4a27de9f6633b2693ab96fb4ef1e44 (diff) | |
download | dimension-1de647b9d38528b640f8da473d50c04ef0674c58.tar.xz |
scene: Get rid of dmnsn_delete_scene().
Diffstat (limited to 'libdimension/scene.c')
-rw-r--r-- | libdimension/scene.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/libdimension/scene.c b/libdimension/scene.c index 6500707..610b8f9 100644 --- a/libdimension/scene.c +++ b/libdimension/scene.c @@ -26,11 +26,25 @@ #include "dimension-internal.h" #include <stdlib.h> +static void +dmnsn_scene_cleanup(void *ptr) +{ + dmnsn_scene *scene = ptr; + DMNSN_ARRAY_FOREACH (dmnsn_object **, object, scene->objects) { + dmnsn_delete_object(*object); + } + + dmnsn_delete_array(scene->lights); + dmnsn_delete_array(scene->objects); + dmnsn_delete_texture(scene->default_texture); + dmnsn_delete_pigment(scene->background); +} + /* Allocate an empty scene */ dmnsn_scene * dmnsn_new_scene(dmnsn_pool *pool) { - dmnsn_scene *scene = DMNSN_PALLOC(pool, dmnsn_scene); + dmnsn_scene *scene = DMNSN_PALLOC_TIDY(pool, dmnsn_scene, dmnsn_scene_cleanup); scene->background = NULL; scene->default_texture = dmnsn_new_texture(); @@ -52,22 +66,6 @@ dmnsn_new_scene(dmnsn_pool *pool) return scene; } -/* Free a scene */ -void -dmnsn_delete_scene(dmnsn_scene *scene) -{ - if (scene) { - DMNSN_ARRAY_FOREACH (dmnsn_object **, object, scene->objects) { - dmnsn_delete_object(*object); - } - - dmnsn_delete_array(scene->lights); - dmnsn_delete_array(scene->objects); - dmnsn_delete_texture(scene->default_texture); - dmnsn_delete_pigment(scene->background); - } -} - void dmnsn_scene_initialize(dmnsn_scene *scene) { |