diff options
author | Ton Roosendaal <ton@blender.org> | 2004-09-30 20:35:40 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2004-09-30 20:35:40 +0400 |
commit | fb6aee54e60ec52cb1522824d7622e2c8c13a1f4 (patch) | |
tree | 797b0a3d1e8642c33509c8eb434ec6dc7787be88 /source/blender/src/drawobject.c | |
parent | 9e0456d36e62796db82253f441471252f0011903 (diff) |
Solved crash with;
- linked duplicate mesh
- subsurf on
- subdiv levels at 0
- new selectmode face + select clipping
Also found error in backbface draw when faces were hidden
Diffstat (limited to 'source/blender/src/drawobject.c')
-rw-r--r-- | source/blender/src/drawobject.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c index e6bc98e4e4d..202abc6bab2 100644 --- a/source/blender/src/drawobject.c +++ b/source/blender/src/drawobject.c @@ -4433,18 +4433,19 @@ static int bbs_mesh_solid(Object *ob, int facecol) if(dl) dlm= dl->mesh; a= 0; - if(dlm) { + if(dlm && dlm->editface) { + EditFace *prevefa; MFace *mface; efa= NULL; + // tuck original indices in efa->prev + for(b=1, efa= G.editMesh->faces.first; efa; efa= efa->next, b++) efa->prev= (EditFace *)(b); + for(b=0, mface= dlm->mface; b<dlm->totface; b++, mface++) { if(mface->v3) { if(facecol) { - if( efa != dlm->editface[b] ) { - efa= dlm->editface[b]; - a++; - } - cpack(index_to_framebuffer(a)); + efa= dlm->editface[b]; + cpack(index_to_framebuffer((int)efa->prev)); } glBegin(mface->v4?GL_QUADS:GL_TRIANGLES); @@ -4455,7 +4456,10 @@ static int bbs_mesh_solid(Object *ob, int facecol) glEnd(); } } - a++; // the weird constructed loop ends with last drawn color... + for (prevefa= NULL, efa= G.editMesh->faces.first; efa; prevefa= efa, efa= efa->next) + efa->prev= prevefa; + + a= b+1; } else { a= 1; |