From 77f880207d4fc37f82299d78d04be13623d9da0a Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 30 May 2014 15:07:35 -0400 Subject: scene: Use pool. --- libdimension-python/dimension.pxd | 2 +- libdimension-python/dimension.pyx | 2 +- libdimension/dimension/scene.h | 5 +++-- libdimension/scene.c | 5 ++--- libdimension/tests/render.c | 8 +++++--- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/libdimension-python/dimension.pxd b/libdimension-python/dimension.pxd index 0d862ae..d3c0c9e 100644 --- a/libdimension-python/dimension.pxd +++ b/libdimension-python/dimension.pxd @@ -414,7 +414,7 @@ cdef extern from "../libdimension/dimension.h": dmnsn_timer bounding_timer dmnsn_timer render_timer - dmnsn_scene *dmnsn_new_scene() + dmnsn_scene *dmnsn_new_scene(dmnsn_pool *pool) void dmnsn_delete_scene(dmnsn_scene *scene) void dmnsn_ray_trace(dmnsn_scene *scene) diff --git a/libdimension-python/dimension.pyx b/libdimension-python/dimension.pyx index 24ec4bd..c84d21a 100644 --- a/libdimension-python/dimension.pyx +++ b/libdimension-python/dimension.pyx @@ -1511,7 +1511,7 @@ cdef class Scene: lights -- the list of lights in the scene camera -- the camera for the scene """ - self._scene = dmnsn_new_scene() + self._scene = dmnsn_new_scene(_get_pool()) self._scene.canvas = canvas._canvas DMNSN_INCREF(self._scene.canvas) diff --git a/libdimension/dimension/scene.h b/libdimension/dimension/scene.h index 875c1bb..321fac2 100644 --- a/libdimension/dimension/scene.h +++ b/libdimension/dimension/scene.h @@ -1,5 +1,5 @@ /************************************************************************* - * Copyright (C) 2010-2011 Tavian Barnes * + * Copyright (C) 2010-2014 Tavian Barnes * * * * This file is part of The Dimension Library. * * * @@ -83,9 +83,10 @@ typedef struct dmnsn_scene { /** * Create a scene. + * @param[in] pool The memory pool to allocate from. * @return A new empty scene. */ -dmnsn_scene *dmnsn_new_scene(void); +dmnsn_scene *dmnsn_new_scene(dmnsn_pool *pool); /** * Delete a scene. diff --git a/libdimension/scene.c b/libdimension/scene.c index 9f8104b..2d25602 100644 --- a/libdimension/scene.c +++ b/libdimension/scene.c @@ -28,9 +28,9 @@ /* Allocate an empty scene */ dmnsn_scene * -dmnsn_new_scene(void) +dmnsn_new_scene(dmnsn_pool *pool) { - dmnsn_scene *scene = DMNSN_MALLOC(dmnsn_scene); + dmnsn_scene *scene = DMNSN_PALLOC(pool, dmnsn_scene); scene->background = NULL; scene->default_texture = dmnsn_new_texture(); @@ -71,7 +71,6 @@ dmnsn_delete_scene(dmnsn_scene *scene) dmnsn_delete_interior(scene->default_interior); dmnsn_delete_texture(scene->default_texture); dmnsn_delete_pigment(scene->background); - dmnsn_free(scene); } } diff --git a/libdimension/tests/render.c b/libdimension/tests/render.c index 0192d35..e68dcc4 100644 --- a/libdimension/tests/render.c +++ b/libdimension/tests/render.c @@ -301,9 +301,9 @@ dmnsn_test_scene_add_objects(dmnsn_scene *scene) * Test scene */ static dmnsn_scene * -dmnsn_new_test_scene(void) +dmnsn_new_test_scene(dmnsn_pool *pool) { - dmnsn_scene *scene = dmnsn_new_scene(); + dmnsn_scene *scene = dmnsn_new_scene(pool); dmnsn_test_scene_set_defaults(scene); dmnsn_test_scene_add_canvas(scene); dmnsn_test_scene_add_camera(scene); @@ -320,7 +320,8 @@ main(void) dmnsn_die_on_warnings(true); /* Create the test scene */ - dmnsn_scene *scene = dmnsn_new_test_scene(); + dmnsn_pool *pool = dmnsn_new_pool(); + dmnsn_scene *scene = dmnsn_new_test_scene(pool); /* Optimize the canvas for PNG export */ bool have_png = true; @@ -422,5 +423,6 @@ main(void) dmnsn_delete_display(display); dmnsn_delete_scene(scene); + dmnsn_delete_pool(pool); return EXIT_SUCCESS; } -- cgit v1.2.3