commit 415b9a55a79c41759fcdd05548673ead37148e9f
parent 03a6935c69dd4b776d89f1e25dc800ec567bcbc9
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Wed, 13 Feb 2019 15:12:04 +0100
Rename API calls on enclosure descriptors and add release API.
Diffstat:
3 files changed, 49 insertions(+), 15 deletions(-)
diff --git a/src/sdis.h b/src/sdis.h
@@ -531,17 +531,24 @@ sdis_scene_boundary_project_position
const double pos[3],
double uv[]);
-/* Get the descriptor of the scene's enclosures */
+/* Get the descriptor of the 2D scene's enclosures */
SDIS_API res_T
-sdis_get_geometry2d_analyze
+sdis_get_scene_2d_analyze
(struct sdis_scene* scn,
struct senc2d_descriptor** descriptor);
+/* Get the descriptor of the 3D scene's enclosures */
SDIS_API res_T
-sdis_get_geometry_analyze
+sdis_get_scene_analyze
(struct sdis_scene* scn,
struct senc_descriptor** descriptor);
+/* Release the descriptor of the scene's enclosures;
+ * subsequent attempts to get it will fail. */
+SDIS_API res_T
+sdis_release_scene_analyze
+ (struct sdis_scene* scn);
+
/*******************************************************************************
* An estimator stores the state of a simulation
******************************************************************************/
diff --git a/src/sdis_scene.c b/src/sdis_scene.c
@@ -278,7 +278,7 @@ sdis_scene_boundary_project_position
}
res_T
-sdis_get_geometry2d_analyze
+sdis_get_scene_2d_analyze
(struct sdis_scene* scn,
struct senc2d_descriptor** descriptor)
{
@@ -290,7 +290,7 @@ sdis_get_geometry2d_analyze
}
res_T
-sdis_get_geometry_analyze
+sdis_get_scene_analyze
(struct sdis_scene* scn,
struct senc_descriptor** descriptor)
{
@@ -301,6 +301,19 @@ sdis_get_geometry_analyze
return RES_OK;
}
+res_T
+sdis_release_scene_analyze(struct sdis_scene* scn)
+{
+ if (!scn) return RES_BAD_ARG;
+ if(scn->senc2d_descriptor)
+ SENC2D(descriptor_ref_put(scn->senc2d_descriptor));
+ if(scn->senc_descriptor)
+ SENC(descriptor_ref_put(scn->senc_descriptor));
+ scn->senc_descriptor = NULL;
+ scn->senc2d_descriptor = NULL;
+ return RES_OK;
+}
+
/*******************************************************************************
* Local miscellaneous function
******************************************************************************/
diff --git a/src/test_sdis_scene.c b/src/test_sdis_scene.c
@@ -166,12 +166,19 @@ test_scene_3d(struct sdis_device* dev, struct sdis_interface* interf)
OK(sdis_scene_get_boundary_position(scn, 6, uv1, pos1));
CHK(!d3_eq_eps(pos1, pos, 1.e-6));
- BA(sdis_get_geometry_analyze(NULL, NULL));
- BA(sdis_get_geometry_analyze(scn, NULL));
- BA(sdis_get_geometry_analyze(NULL, &descriptor));
- OK(sdis_get_geometry_analyze(scn, &descriptor));
+ BA(sdis_get_scene_analyze(NULL, NULL));
+ BA(sdis_get_scene_analyze(scn, NULL));
+ BA(sdis_get_scene_analyze(NULL, &descriptor));
+ OK(sdis_get_scene_analyze(scn, &descriptor));
OK(senc_descriptor_ref_put(descriptor));
- BA(sdis_get_geometry2d_analyze(scn, &descriptor2d));
+ /* No 2D available */
+ BA(sdis_get_scene_2d_analyze(scn, &descriptor2d));
+ BA(sdis_release_scene_analyze(NULL));
+ OK(sdis_release_scene_analyze(scn));
+ /* Allready released */
+ BA(sdis_release_scene_analyze(scn));
+ /* Descriptor released: cannot get it anymore */
+ BA(sdis_get_scene_analyze(scn, &descriptor));
BA(sdis_scene_ref_get(NULL));
OK(sdis_scene_ref_get(scn));
@@ -261,12 +268,19 @@ test_scene_2d(struct sdis_device* dev, struct sdis_interface* interf)
OK(sdis_scene_boundary_project_position(scn, 3, pos, &u0));
CHK(eq_eps(u0, 1, 1.e-6));
- BA(sdis_get_geometry2d_analyze(NULL, NULL));
- BA(sdis_get_geometry2d_analyze(scn, NULL));
- BA(sdis_get_geometry2d_analyze(NULL, &descriptor));
- OK(sdis_get_geometry2d_analyze(scn, &descriptor));
+ BA(sdis_get_scene_2d_analyze(NULL, NULL));
+ BA(sdis_get_scene_2d_analyze(scn, NULL));
+ BA(sdis_get_scene_2d_analyze(NULL, &descriptor));
+ OK(sdis_get_scene_2d_analyze(scn, &descriptor));
OK(senc2d_descriptor_ref_put(descriptor));
- BA(sdis_get_geometry_analyze(scn, &descriptor3d));
+ /* No 3D available */
+ BA(sdis_get_scene_analyze(scn, &descriptor3d));
+ BA(sdis_release_scene_analyze(NULL));
+ OK(sdis_release_scene_analyze(scn));
+ /* Allready released */
+ BA(sdis_release_scene_analyze(scn));
+ /* Descriptor released: cannot get it anymore */
+ BA(sdis_get_scene_2d_analyze(scn, &descriptor));
OK(sdis_scene_ref_put(scn));
}