[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58791] branches/soc-2013-depsgraph_mt/ source/blender/blenkernel/intern/scene.c: Made it so threaded update statistics only prints when something was updated

Sergey Sharybin sergey.vfx at gmail.com
Wed Jul 31 23:55:54 CEST 2013


Revision: 58791
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58791
Author:   nazgul
Date:     2013-07-31 21:55:54 +0000 (Wed, 31 Jul 2013)
Log Message:
-----------
Made it so threaded update statistics only prints when something was updated

This prevents infinite prints of statistics while blender is idling.

Modified Paths:
--------------
    branches/soc-2013-depsgraph_mt/source/blender/blenkernel/intern/scene.c

Modified: branches/soc-2013-depsgraph_mt/source/blender/blenkernel/intern/scene.c
===================================================================
--- branches/soc-2013-depsgraph_mt/source/blender/blenkernel/intern/scene.c	2013-07-31 21:55:47 UTC (rev 58790)
+++ branches/soc-2013-depsgraph_mt/source/blender/blenkernel/intern/scene.c	2013-07-31 21:55:54 UTC (rev 58791)
@@ -1179,6 +1179,7 @@
 
 #ifdef ENABLE_THREAD_STATISTICS
 	ListBase statistics[64];
+	int num_updated_objects;
 #endif
 } ThreadedObjectUpdateState;
 
@@ -1186,7 +1187,8 @@
 
 static void scene_update_object_func(TaskPool *pool, void *taskdata, int threadid)
 {
-#define PRINT if (G.debug & G_DEBUG) printf
+/* Disable print for now in favor of summary statistics at the end of update. */
+#define PRINT if (false) printf
 
 	ThreadedObjectUpdateState *state = (ThreadedObjectUpdateState *) BLI_task_pool_userdata(pool);
 	void *node = taskdata;
@@ -1204,6 +1206,12 @@
 #ifdef ENABLE_THREAD_STATISTICS
 		if (G.debug & G_DEBUG) {
 			start_time = PIL_check_seconds_timer();
+
+			if (object->recalc & OB_RECALC_ALL) {
+				BLI_spin_lock(&state->lock);
+				state->num_updated_objects++;
+				BLI_spin_unlock(&state->lock);
+			}
 		}
 #endif
 
@@ -1257,21 +1265,24 @@
 		double total_time = 0.0;
 		StatisicsEntry *entry;
 
-		for (entry = state->statistics[i].first;
-		     entry;
-		     entry = entry->next)
-		{
-			total_objects++;
-			total_time += entry->time;
-		}
+		if (state->num_updated_objects > 0) {
+			/* Don't pollute output if no objects were updated. */
+			for (entry = state->statistics[i].first;
+			     entry;
+			     entry = entry->next)
+			{
+				total_objects++;
+				total_time += entry->time;
+			}
 
-		printf("Thread %d: total %d objects in %f sec.\n", i, total_objects, total_time);
+			printf("Thread %d: total %d objects in %f sec.\n", i, total_objects, total_time);
 
-		for (entry = state->statistics[i].first;
-		     entry;
-		     entry = entry->next)
-		{
-			printf("  %s in %f sec\n", entry->object->id.name + 2, entry->time);
+			for (entry = state->statistics[i].first;
+			     entry;
+			     entry = entry->next)
+				{
+					printf("  %s in %f sec\n", entry->object->id.name + 2, entry->time);
+				}
 		}
 
 		BLI_freelistN(&state->statistics[i]);
@@ -1296,6 +1307,7 @@
 	state.scene_parent = scene_parent;
 #ifdef ENABLE_THREAD_STATISTICS
 	memset(state.statistics, 0, sizeof(state.statistics));
+	state.num_updated_objects = 0;
 #endif
 	BLI_spin_init(&state.lock);
 




More information about the Bf-blender-cvs mailing list