[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23616] trunk/blender/source/blender/ editors/sculpt_paint/sculpt.c: sculpt mode crash fix when VBOs disabled

Lukas Steiblys imbusy at imbusy.org
Sat Oct 3 18:21:35 CEST 2009


Revision: 23616
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23616
Author:   imbusy
Date:     2009-10-03 18:21:35 +0200 (Sat, 03 Oct 2009)

Log Message:
-----------
sculpt mode crash fix when VBOs disabled

Modified Paths:
--------------
    trunk/blender/source/blender/editors/sculpt_paint/sculpt.c

Modified: trunk/blender/source/blender/editors/sculpt_paint/sculpt.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/sculpt.c	2009-10-03 15:35:01 UTC (rev 23615)
+++ trunk/blender/source/blender/editors/sculpt_paint/sculpt.c	2009-10-03 16:21:35 UTC (rev 23616)
@@ -311,7 +311,8 @@
 
 	calc_area_normal(sd, ss, area_normal, active_verts);
 	
-	buffer = (float *)GPU_buffer_lock( ss->drawobject->vertices );
+	buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0;
+
 	while(node){
 		float *co= ss->mvert[node->Index].co;
 
@@ -382,7 +383,7 @@
 static void do_smooth_brush(Sculpt *s, SculptSession *ss, const ListBase* active_verts)
 {
 	ActiveData *node= active_verts->first;
-	float *buffer = (float *)GPU_buffer_lock( ss->drawobject->vertices );
+	float *buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0;
 	int i;
 	
 	for(i = 0; i < 2; ++i) {
@@ -413,7 +414,7 @@
 static void do_pinch_brush(Sculpt *s, SculptSession *ss, const ListBase* active_verts)
 {
  	ActiveData *node= active_verts->first;
-	float *buffer = (float *)GPU_buffer_lock( ss->drawobject->vertices );
+	float *buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0;
 
 	while(node) {
 		float *co= ss->mvert[node->Index].co;
@@ -441,7 +442,7 @@
 	ActiveData *node= ss->cache->grab_active_verts[ss->cache->symmetry].first;
 	float add[3];
 	float grab_delta[3];
-	float *buffer = (float *)GPU_buffer_lock( ss->drawobject->vertices );
+	float *buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0;
 	
 	VecCopyf(grab_delta, ss->cache->grab_delta_symmetry);
 	
@@ -481,7 +482,7 @@
 
 	calc_area_normal(sd, ss, area_normal, active_verts);
 
-	buffer = (float *)GPU_buffer_lock( ss->drawobject->vertices );
+	buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0;
 	while(node){
 		float *disp= &ss->layer_disps[node->Index];
 		float *co= ss->mvert[node->Index].co;
@@ -517,7 +518,7 @@
 {
 	ActiveData *node= active_verts->first;
 	float add[3];
-	float *buffer = (float *)GPU_buffer_lock( ss->drawobject->vertices );
+	float *buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0;
 
 	while(node) {
 		float *co= ss->mvert[node->Index].co;
@@ -619,7 +620,7 @@
 		flip = bstr < 0;
 	}
 
-	buffer = (float *)GPU_buffer_lock( ss->drawobject->vertices );	
+	buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->vertices ):0;
 
 	while(node){
 		float *co= ss->mvert[node->Index].co;
@@ -982,7 +983,7 @@
 {
 	ActiveData *vert;
     
-	float *buffer = (float *)GPU_buffer_lock( ss->drawobject->normals );
+	float *buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->normals ):0;
 	for(vert= lb->first; vert; vert= vert->next) {
 		vec3f norm= {0,0,0};		
 		IndexNode *face= ss->fmap[vert->Index].first;
@@ -1453,7 +1454,7 @@
 
 	/* Restore the mesh before continuing with anchored stroke */
 	if((brush->flag & BRUSH_ANCHORED) && ss->mesh_co_orig) {
-		buffer = (float *)GPU_buffer_lock( ss->drawobject->normals );
+		buffer = buffer = ss->drawobject!=0?(float *)GPU_buffer_lock( ss->drawobject->normals ):0;
 		for(i = 0; i < ss->totvert; ++i) {
 			VecCopyf(ss->mvert[i].co, ss->mesh_co_orig[i]);
 			ss->mvert[i].no[0] = cache->orig_norms[i][0];





More information about the Bf-blender-cvs mailing list