[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57142] trunk/blender/source/blender/ blenkernel/intern/DerivedMesh.c: fix debug derived mesh print function, layers in the customdata that were NULL were not printed.

Campbell Barton ideasman42 at gmail.com
Thu May 30 15:13:43 CEST 2013


Revision: 57142
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57142
Author:   campbellbarton
Date:     2013-05-30 13:13:43 +0000 (Thu, 30 May 2013)
Log Message:
-----------
fix debug derived mesh print function, layers in the customdata that were NULL were not printed.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c

Modified: trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c	2013-05-30 12:05:28 UTC (rev 57141)
+++ trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c	2013-05-30 13:13:43 UTC (rev 57142)
@@ -3114,22 +3114,24 @@
 #ifndef NDEBUG
 #include "BLI_dynstr.h"
 
-static void dm_debug_info_layers(DynStr *dynstr, DerivedMesh *dm, void *(*getElemDataArray)(DerivedMesh *, int))
+static void dm_debug_info_layers(DynStr *dynstr, DerivedMesh *dm, CustomData *cd,
+                                 void *(*getElemDataArray)(DerivedMesh *, int))
 {
 	int type;
 
 	for (type = 0; type < CD_NUMTYPES; type++) {
-		/* note: doesnt account for multiple layers */
-		void *pt = getElemDataArray(dm, type);
-		if (pt) {
+		if (CustomData_has_layer(cd, type)) {
+			/* note: doesnt account for multiple layers */
 			const char *name = CustomData_layertype_name(type);
 			const int size = CustomData_sizeof(type);
+			const void *pt = getElemDataArray(dm, type);
+			const int pt_size = pt ? (int)(MEM_allocN_len(pt) / size) : 0;
 			const char *structname;
 			int structnum;
 			CustomData_file_write_info(type, &structname, &structnum);
 			BLI_dynstr_appendf(dynstr,
 			                   "        dict(name='%s', struct='%s', type=%d, ptr='%p', elem=%d, length=%d),\n",
-			                   name, structname, type, (void *)pt, size, (int)(MEM_allocN_len(pt) / size));
+			                   name, structname, type, (void *)pt, size, pt_size);
 		}
 	}
 }
@@ -3156,25 +3158,25 @@
 	BLI_dynstr_appendf(dynstr, "    'deformedOnly': %d,\n", dm->deformedOnly);
 
 	BLI_dynstr_appendf(dynstr, "    'vertexLayers': (\n");
-	dm_debug_info_layers(dynstr, dm, dm->getVertDataArray);
+	dm_debug_info_layers(dynstr, dm, &dm->vertData, dm->getVertDataArray);
 	BLI_dynstr_appendf(dynstr, "    ),\n");
 
+	BLI_dynstr_appendf(dynstr, "    'edgeLayers': (\n");
+	dm_debug_info_layers(dynstr, dm, &dm->edgeData, dm->getEdgeDataArray);
+	BLI_dynstr_appendf(dynstr, "    ),\n");
+
 	BLI_dynstr_appendf(dynstr, "    'loopLayers': (\n");
-	dm_debug_info_layers(dynstr, dm, DM_get_loop_data_layer);
+	dm_debug_info_layers(dynstr, dm, &dm->loopData, dm->getLoopDataArray);
 	BLI_dynstr_appendf(dynstr, "    ),\n");
 
-	BLI_dynstr_appendf(dynstr, "    'edgeLayers': (\n");
-	dm_debug_info_layers(dynstr, dm, dm->getEdgeDataArray);
+	BLI_dynstr_appendf(dynstr, "    'polyLayers': (\n");
+	dm_debug_info_layers(dynstr, dm, &dm->polyData, dm->getPolyDataArray);
 	BLI_dynstr_appendf(dynstr, "    ),\n");
 
 	BLI_dynstr_appendf(dynstr, "    'tessFaceLayers': (\n");
-	dm_debug_info_layers(dynstr, dm, dm->getTessFaceDataArray);
+	dm_debug_info_layers(dynstr, dm, &dm->faceData, dm->getTessFaceDataArray);
 	BLI_dynstr_appendf(dynstr, "    ),\n");
 
-	BLI_dynstr_appendf(dynstr, "    'polyLayers': (\n");
-	dm_debug_info_layers(dynstr, dm, DM_get_poly_data_layer);
-	BLI_dynstr_appendf(dynstr, "    ),\n");
-
 	BLI_dynstr_appendf(dynstr, "}\n");
 
 	ret = BLI_dynstr_get_cstring(dynstr);




More information about the Bf-blender-cvs mailing list