Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-05-08 16:59:56 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-05-08 16:59:56 +0400
commitf554c264da7d0f53a2519079a2e670ecb4e8629d (patch)
tree8158335342913fc59dd1be69e35a3d65a0491bbe /source/blender/blenkernel/intern/customdata.c
parentc6702a3b917894bf150e19526e1eedd8d5f2e91b (diff)
speedup for freeing bmeshes, skip calling free on every
vert/edge/face/loop if there are no free functions for the customdata layers.
Diffstat (limited to 'source/blender/blenkernel/intern/customdata.c')
-rw-r--r--source/blender/blenkernel/intern/customdata.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c
index b0ecec21049..11c8ca5d3c4 100644
--- a/source/blender/blenkernel/intern/customdata.c
+++ b/source/blender/blenkernel/intern/customdata.c
@@ -2552,6 +2552,23 @@ bool CustomData_has_math(struct CustomData *data)
return false;
}
+/* a non bmesh version would have to check layer->data */
+bool CustomData_bmesh_has_free(struct CustomData *data)
+{
+ const LayerTypeInfo *typeInfo;
+ int i;
+
+ for (i = 0; i < data->totlayer; ++i) {
+ if (!(data->layers[i].flag & CD_FLAG_NOFREE)) {
+ typeInfo = layerType_getInfo(data->layers[i].type);
+ if (typeInfo->free) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
bool CustomData_has_interp(struct CustomData *data)
{
int i;