summaryrefslogtreecommitdiffstats
path: root/libdimension/scene.c
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2014-05-30 20:24:03 -0400
committerTavian Barnes <tavianator@tavianator.com>2014-05-30 20:24:03 -0400
commit1de647b9d38528b640f8da473d50c04ef0674c58 (patch)
treec2b4ae1234a4d20142ab70b6e27030082b10b13d /libdimension/scene.c
parent72daebf48e4a27de9f6633b2693ab96fb4ef1e44 (diff)
downloaddimension-1de647b9d38528b640f8da473d50c04ef0674c58.tar.xz
scene: Get rid of dmnsn_delete_scene().
Diffstat (limited to 'libdimension/scene.c')
-rw-r--r--libdimension/scene.c32
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)
{