From 3c2e6050b579c8e3c16d980e2ce70436d87e3a2d Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Mon, 26 May 2014 16:39:30 -0400 Subject: light: Get rid of ->ptr field. --- libdimension/light.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'libdimension/light.c') diff --git a/libdimension/light.c b/libdimension/light.c index fdb65bd..daabe6f 100644 --- a/libdimension/light.c +++ b/libdimension/light.c @@ -26,18 +26,30 @@ #include "dimension-internal.h" #include +static void +dmnsn_default_light_free_fn(dmnsn_light *light) +{ + dmnsn_free(light); +} + /* Allocate a new dummy light */ dmnsn_light * dmnsn_new_light(void) { dmnsn_light *light = DMNSN_MALLOC(dmnsn_light); - light->direction_fn = NULL; + dmnsn_init_light(light); + return light; +} + +/* Initialize a light */ +void +dmnsn_init_light(dmnsn_light *light) +{ + light->direction_fn = NULL; light->illumination_fn = NULL; - light->shadow_fn = NULL; - light->free_fn = NULL; - light->ptr = NULL; + light->shadow_fn = NULL; + light->free_fn = dmnsn_default_light_free_fn; DMNSN_REFCOUNT_INIT(light); - return light; } /* Free a dummy light */ @@ -45,9 +57,6 @@ void dmnsn_delete_light(dmnsn_light *light) { if (DMNSN_DECREF(light)) { - if (light->free_fn) { - light->free_fn(light->ptr); - } - dmnsn_free(light); + light->free_fn(light); } } -- cgit v1.2.3