commit f76a3ad68c8aa85cb286f278fc554fe8cfb9a6f3
parent 5a0baa541f00a8cecd6a2f42c0c04c2decf6749b
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Mon, 18 Jan 2016 11:22:17 +0100
Implement and test the s3d_scene_get_device function
Diffstat:
3 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/src/s3d.h b/src/s3d.h
@@ -344,6 +344,12 @@ s3d_scene_get_aabb
float lower[3], /* AABB lower bound */
float upper[3]); /* AABB upper bound */
+/* Retrieve the device from which the scene was created */
+S3D_API res_T
+s3d_scene_get_device
+ (struct s3d_scene* scn,
+ struct s3d_device** dev);
+
/*******************************************************************************
* Shape API - A shape defines a geometry that can be attached to *one* scene.
******************************************************************************/
diff --git a/src/s3d_scene.c b/src/s3d_scene.c
@@ -1266,3 +1266,11 @@ s3d_scene_get_aabb(struct s3d_scene* scn, float lower[3], float upper[3])
return RES_OK;
}
+res_T
+s3d_scene_get_device(struct s3d_scene* scn, struct s3d_device** dev)
+{
+ if(!scn || !dev) return RES_BAD_ARG;
+ *dev = scn->dev;
+ return RES_OK;
+}
+
diff --git a/src/test_s3d_scene.c b/src/test_s3d_scene.c
@@ -88,7 +88,7 @@ main(int argc, char** argv)
{
struct mem_allocator allocator;
struct s3d_primitive prims[10];
- struct s3d_device* dev;
+ struct s3d_device* dev, *dev2;
struct s3d_scene* scn;
struct s3d_scene* scn2;
struct s3d_scene* scn3;
@@ -315,6 +315,14 @@ main(int argc, char** argv)
CHECK(eq_epsf(volume, 1.f, 1.e-6f), 1);
CHECK(s3d_scene_end_session(scn), RES_OK);
+ CHECK(s3d_scene_get_device(NULL, NULL), RES_BAD_ARG);
+ CHECK(s3d_scene_get_device(scn, NULL), RES_BAD_ARG);
+ CHECK(s3d_scene_get_device(NULL, &dev2), RES_BAD_ARG);
+ CHECK(s3d_scene_get_device(scn, &dev2), RES_OK);
+ CHECK(dev2, dev);
+ CHECK(s3d_scene_get_device(scn2, &dev2), RES_OK);
+ CHECK(dev2, dev);
+
CHECK(s3d_scene_ref_put(scn), RES_OK);
CHECK(s3d_scene_ref_put(scn2), RES_OK);
CHECK(s3d_shape_ref_put(shapes[0]), RES_OK);