commit 749b865c6fa32b143ab295065fbb5bcdb8167696
parent 687a8ebf91407a63730037ec662e7e6ebd0a39b1
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Fri, 13 Apr 2018 15:20:06 +0200
Fix by enclosure stuff (part of code was missing)
Diffstat:
3 files changed, 41 insertions(+), 4 deletions(-)
diff --git a/src/senc_descriptor.c b/src/senc_descriptor.c
@@ -111,6 +111,7 @@ senc_descriptor_get_enclosure_count_by_medium
ids = darray_ids_array_cdata_get(&desc->ids_array_by_medium);
tmp = darray_uint_size_get(ids);
ASSERT(tmp < UINT_MAX); /* API type */
+ *count = (unsigned) tmp;
return RES_OK;
}
diff --git a/src/senc_scene_analyze.c b/src/senc_scene_analyze.c
@@ -1024,6 +1024,7 @@ build_result
const enclosure_id_t e = (enclosure_id_t)ee;
struct enclosure_data* enc = enclosures + e;
const struct cc_descriptor* current = cc_descriptors[enc->first_component];
+ struct darray_uint* ids_by_medium;
trg_id_t fst_idx = 0;
trg_id_t sgd_idx = enc->side_count;
trg_id_t t;
@@ -1041,6 +1042,11 @@ build_result
= (unsigned)current->medium; /* Back to API type */
ASSERT(enc->header.enclosed_medium < desc->scene->nmeds);
+ ids_by_medium = darray_ids_array_data_get(&desc->ids_array_by_medium)
+ + current->medium;
+ tmp_res = darray_uint_push_back(ids_by_medium, &e);
+ if(*res != RES_OK) continue;
+
/* Build side and vertex lists. */
OK2(darray_triangle_in_resize(&enc->sides, enc->side_count));
/* Size is just a int */
diff --git a/src/test_senc_descriptor.c b/src/test_senc_descriptor.c
@@ -70,15 +70,45 @@ main(int argc, char** argv)
CHK(count == 2);
+ CHK(senc_descriptor_get_enclosure_count_by_medium(NULL, 0, &count) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_count_by_medium(desc, 9, &count) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_count_by_medium(desc, 0, NULL) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_count_by_medium(NULL, 9, &count) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_count_by_medium(NULL, 0, NULL) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_count_by_medium(desc, 9, NULL) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_count_by_medium(NULL, 9, NULL) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_count_by_medium(desc, 0, &count) == RES_OK);
+
+ CHK(count == 1);
+
CHK(senc_descriptor_get_enclosure(NULL, 0, &enc) == RES_BAD_ARG);
- CHK(senc_descriptor_get_enclosure(desc, count, &enc) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure(desc, 9, &enc) == RES_BAD_ARG);
CHK(senc_descriptor_get_enclosure(desc, 0, NULL) == RES_BAD_ARG);
- CHK(senc_descriptor_get_enclosure(NULL, count, &enc) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure(NULL, 9, &enc) == RES_BAD_ARG);
CHK(senc_descriptor_get_enclosure(NULL, 0, NULL) == RES_BAD_ARG);
- CHK(senc_descriptor_get_enclosure(desc, count, NULL) == RES_BAD_ARG);
- CHK(senc_descriptor_get_enclosure(NULL, count, NULL) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure(desc, 9, NULL) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure(NULL, 9, NULL) == RES_BAD_ARG);
CHK(senc_descriptor_get_enclosure(desc, 0, &enc) == RES_OK);
+ CHK(senc_enclosure_ref_put(enc) == RES_OK);
+
+ CHK(senc_descriptor_get_enclosure_by_medium(desc, 0, 0, NULL) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_by_medium(desc, 0, 9, &enc) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_by_medium(desc, 0, 9, NULL) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_by_medium(desc, 9, 0, &enc) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_by_medium(desc, 9, 0, NULL) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_by_medium(desc, 9, 9, &enc) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_by_medium(desc, 9, 9, NULL) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_by_medium(NULL, 0, 0, &enc) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_by_medium(NULL, 0, 0, NULL) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_by_medium(NULL, 0, 9, &enc) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_by_medium(NULL, 0, 9, NULL) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_by_medium(NULL, 9, 0, &enc) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_by_medium(NULL, 9, 0, NULL) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_by_medium(NULL, 9, 9, &enc) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_by_medium(NULL, 9, 9, NULL) == RES_BAD_ARG);
+ CHK(senc_descriptor_get_enclosure_by_medium(desc, 0, 0, &enc) == RES_OK);
+
CHK(senc_descriptor_get_global_vertices_count(NULL, &count) == RES_BAD_ARG);
CHK(senc_descriptor_get_global_vertices_count(desc, NULL) == RES_BAD_ARG);
CHK(senc_descriptor_get_global_vertices_count(desc, &count) == RES_OK);