[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29441] trunk/blender/source/blender/ editors/space_node/node_draw.c: Don't draw nodes that are out of the view

Matt Ebb matt at mke3.net
Mon Jun 14 09:02:12 CEST 2010


Revision: 29441
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29441
Author:   broken
Date:     2010-06-14 09:02:11 +0200 (Mon, 14 Jun 2010)

Log Message:
-----------
Don't draw nodes that are out of the view
speeds up node editor fairly considerably on a complex comp

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_node/node_draw.c

Modified: trunk/blender/source/blender/editors/space_node/node_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_draw.c	2010-06-14 03:52:10 UTC (rev 29440)
+++ trunk/blender/source/blender/editors/space_node/node_draw.c	2010-06-14 07:02:11 UTC (rev 29441)
@@ -626,13 +626,7 @@
 		}
 	}
 	
-//	if(GPU_type_matches(GPU_DEVICE_NVIDIA, GPU_OS_MAC, GPU_DRIVER_OFFICIAL)) {	XXX
-//		float zoomx= curarea->winx/(float)(G.v2d->cur.xmax-G.v2d->cur.xmin);
-//		float zoomy= curarea->winy/(float)(G.v2d->cur.ymax-G.v2d->cur.ymin);
-//		glPixelZoom(zoomx*xscale, zoomy*yscale);
-//	}
-//	else
-		glPixelZoom(xscale, yscale);
+	glPixelZoom(xscale, yscale);
 
 	glEnable(GL_BLEND);
 	glBlendFunc( GL_ONE, GL_ONE_MINUS_SRC_ALPHA );	/* premul graphics */
@@ -661,6 +655,19 @@
 	bNodeTree *ntree = snode->nodetree;
 	PointerRNA ptr;
 	
+	/* hurmf... another candidate for callback, have to see how this works first */
+	if(node->id && node->block && snode->treetype==NTREE_SHADER)
+		nodeShaderSynchronizeID(node, 0);
+	
+	/* skip if out of view */
+	if (node->totr.xmax < ar->v2d.cur.xmin || node->totr.xmin > ar->v2d.cur.xmax ||
+			node->totr.ymax < ar->v2d.cur.ymin || node->totr.ymin > ar->v2d.cur.ymax) {
+		
+		uiEndBlock(C, node->block);
+		node->block= NULL;
+		return;
+	}
+	
 	uiSetRoundBox(15-4);
 	ui_dropshadow(rct, BASIS_RAD, snode->aspect, node->flag & SELECT);
 	
@@ -761,10 +768,6 @@
 		node_draw_mute_line(v2d, snode, node);
 
 	
-	/* hurmf... another candidate for callback, have to see how this works first */
-	if(node->id && node->block && snode->treetype==NTREE_SHADER)
-		nodeShaderSynchronizeID(node, 0);
-	
 	/* socket inputs, buttons */
 	for(sock= node->inputs.first; sock; sock= sock->next) {
 		if(!(sock->flag & (SOCK_HIDDEN|SOCK_UNAVAIL))) {





More information about the Bf-blender-cvs mailing list