- made shadedisplist not free all object displist data...

this messed with data caches which messed with assumptions made
   by drawing code (and was just silly not to mention). here
   be dragons...
This commit is contained in:
2005-04-10 00:00:34 +00:00
parent ae91ba8ba6
commit b1675a345a
3 changed files with 7 additions and 8 deletions

View File

@@ -797,10 +797,12 @@ void shadeDispList(Object *ob)
/* we extract dl_verts, deform info */
dldeform= find_displist(&ob->disp, DL_VERTS);
if(dldeform) BLI_remlink(&ob->disp, dldeform);
/* Metaballs have the standard displist in the Object */
if(ob->type!=OB_MBALL) freedisplist(&ob->disp);
dl = find_displist(&ob->disp, DL_VERTCOL);
if (dl) {
BLI_remlink(&ob->disp, dl);
free_disp_elem(dl);
}
need_orco= 0;
for(a=0; a<ob->totcol; a++) {
@@ -1169,9 +1171,6 @@ void shadeDispList(Object *ob)
ma= give_current_material(ob, a+1);
if(ma) end_render_material(ma);
}
/* this one was temporally removed */
if(dldeform) BLI_addtail(&ob->disp, dldeform);
}
void reshadeall_displist(void)

View File

@@ -1783,7 +1783,7 @@ static void draw_mesh_fancy(Object *ob, DerivedMesh *baseDM, DerivedMesh *realDM
dl = ob->disp.first;
if (!dl || !dl->col1) {
shadeDispList(ob);
dl = ob->disp.first;
dl = find_displist(&ob->disp, DL_VERTCOL);
}
obCol1 = dl->col1;
obCol2 = dl->col2;

View File

@@ -247,7 +247,7 @@ void make_vertexcol() /* single ob */
if(dl==0 || dl->col1==NULL) {
shadeDispList(ob);
dl= ob->disp.first;
dl= find_displist(&ob->disp, DL_VERTCOL);
}
if(dl && dl->col1) {
int i;