diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2014-05-26 16:20:25 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2014-05-26 16:20:25 -0400 |
commit | 036123cc8bb3f1b0ef96f6bd15f0c4d0eefe571e (patch) | |
tree | 3164d211a742e8a3ea9af5183512fbafbe66bc0c /libdimension/camera.c | |
parent | dd8af3177f861c484317f312fa9d64ecb3cd0921 (diff) | |
download | dimension-036123cc8bb3f1b0ef96f6bd15f0c4d0eefe571e.tar.xz |
camera: Kill the ->ptr field.
Diffstat (limited to 'libdimension/camera.c')
-rw-r--r-- | libdimension/camera.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/libdimension/camera.c b/libdimension/camera.c index 1c5a1fc..38fde35 100644 --- a/libdimension/camera.c +++ b/libdimension/camera.c @@ -26,26 +26,35 @@ #include "dimension-internal.h" #include <stdlib.h> +static void dmnsn_default_camera_free_fn(dmnsn_camera *camera) +{ + dmnsn_free(camera); +} + /* Allocate a new dummy camera */ dmnsn_camera * dmnsn_new_camera(void) { dmnsn_camera *camera = DMNSN_MALLOC(dmnsn_camera); - camera->free_fn = NULL; - camera->trans = dmnsn_identity_matrix(); - DMNSN_REFCOUNT_INIT(camera); + dmnsn_init_camera(camera); return camera; } +/* Initialize a camera */ +void +dmnsn_init_camera(dmnsn_camera *camera) +{ + camera->free_fn = dmnsn_default_camera_free_fn; + camera->trans = dmnsn_identity_matrix(); + DMNSN_REFCOUNT_INIT(camera); +} + /* Free a dummy camera */ void dmnsn_delete_camera(dmnsn_camera *camera) { if (DMNSN_DECREF(camera)) { - if (camera->free_fn) { - camera->free_fn(camera->ptr); - } - dmnsn_free(camera); + camera->free_fn(camera); } } |