Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2004-09-30 20:35:40 +0400
committerTon Roosendaal <ton@blender.org>2004-09-30 20:35:40 +0400
commitfb6aee54e60ec52cb1522824d7622e2c8c13a1f4 (patch)
tree797b0a3d1e8642c33509c8eb434ec6dc7787be88 /source/blender/src/drawobject.c
parent9e0456d36e62796db82253f441471252f0011903 (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.c18
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;