diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2014-05-26 16:39:30 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2014-05-26 16:39:51 -0400 |
commit | 3c2e6050b579c8e3c16d980e2ce70436d87e3a2d (patch) | |
tree | 13e1d7fc3ee93658179a3cc7db90ceca76a6519e /libdimension/light.c | |
parent | 036123cc8bb3f1b0ef96f6bd15f0c4d0eefe571e (diff) | |
download | dimension-3c2e6050b579c8e3c16d980e2ce70436d87e3a2d.tar.xz |
light: Get rid of ->ptr field.
Diffstat (limited to 'libdimension/light.c')
-rw-r--r-- | libdimension/light.c | 27 |
1 files changed, 18 insertions, 9 deletions
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 <stdlib.h> +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); } } |