diff options
author | Nicholas Bishop <nicholasbishop@gmail.com> | 2008-04-27 22:26:43 +0400 |
---|---|---|
committer | Nicholas Bishop <nicholasbishop@gmail.com> | 2008-04-27 22:26:43 +0400 |
commit | 7f985f33999fa7db78e59cc2559531f82e276fa2 (patch) | |
tree | 8b54480a75a10d462d8167a943d351762d314055 /source/blender | |
parent | 57c1fbe5579b786ee24e58ad1d67ca5ad0625f76 (diff) |
== Multires ==
Fixed bug #9680, Crash on render
Caused by multires sometimes looking at editmesh data rather than mesh data during render
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/BKE_multires.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/multires-firstlevel.c | 8 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/multires.c | 4 |
3 files changed, 7 insertions, 7 deletions
diff --git a/source/blender/blenkernel/BKE_multires.h b/source/blender/blenkernel/BKE_multires.h index 61eb796e53d..df565ddc7fe 100644 --- a/source/blender/blenkernel/BKE_multires.h +++ b/source/blender/blenkernel/BKE_multires.h @@ -61,7 +61,7 @@ void multires_load_cols(struct Mesh *me); void multires_level_to_mesh(struct Object *ob, struct Mesh *me, const int render); void multires_update_levels(struct Mesh *me, const int render); void multires_update_first_level(struct Mesh *me, struct EditMesh *em); -void multires_update_customdata(struct MultiresLevel *lvl1, struct CustomData *src, +void multires_update_customdata(struct MultiresLevel *lvl1, struct EditMesh *em, struct CustomData *src, struct CustomData *dst, const int type); void multires_customdata_to_mesh(struct Mesh *me, struct EditMesh *em, struct MultiresLevel *lvl, struct CustomData *src, diff --git a/source/blender/blenkernel/intern/multires-firstlevel.c b/source/blender/blenkernel/intern/multires-firstlevel.c index 778dd6f9c77..3d417565eb1 100644 --- a/source/blender/blenkernel/intern/multires-firstlevel.c +++ b/source/blender/blenkernel/intern/multires-firstlevel.c @@ -75,7 +75,7 @@ char type_ok(const int type) } /* Copy vdata or fdata from Mesh or EditMesh to Multires. */ -void multires_update_customdata(MultiresLevel *lvl1, CustomData *src, CustomData *dst, const int type) +void multires_update_customdata(MultiresLevel *lvl1, EditMesh *em, CustomData *src, CustomData *dst, const int type) { if(src && dst && type_ok(type)) { const int tot= (type == CD_MDEFORMVERT ? lvl1->totvert : lvl1->totface); @@ -84,7 +84,7 @@ void multires_update_customdata(MultiresLevel *lvl1, CustomData *src, CustomData CustomData_free(dst, tot); if(CustomData_has_layer(src, type)) { - if(G.obedit) { + if(em) { EditVert *eve= G.editMesh->verts.first; EditFace *efa= G.editMesh->faces.first; CustomData_copy(src, dst, cdmask(type), CD_CALLOC, tot); @@ -227,9 +227,9 @@ void multires_del_lower_customdata(Multires *mr, MultiresLevel *cr_lvl) void multires_update_first_level(Mesh *me, EditMesh *em) { if(me && me->mr && me->mr->current == 1) { - multires_update_customdata(me->mr->levels.first, em ? &em->vdata : &me->vdata, + multires_update_customdata(me->mr->levels.first, em, em ? &em->vdata : &me->vdata, &me->mr->vdata, CD_MDEFORMVERT); - multires_update_customdata(me->mr->levels.first, em ? &em->fdata : &me->fdata, + multires_update_customdata(me->mr->levels.first, em, em ? &em->fdata : &me->fdata, &me->mr->fdata, CD_MTFACE); multires_update_edge_flags(me, em); } diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 3a8847a5be1..9bc7fe28f44 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -373,7 +373,7 @@ void multires_create(Object *ob, Mesh *me) /* Load vertices and vdata (MDeformVerts) */ lvl->totvert= em ? BLI_countlist(&em->verts) : me->totvert; me->mr->verts= MEM_callocN(sizeof(MVert)*lvl->totvert,"multires verts"); - multires_update_customdata(me->mr->levels.first, em ? &em->vdata : &me->vdata, + multires_update_customdata(me->mr->levels.first, em, em ? &em->vdata : &me->vdata, &me->mr->vdata, CD_MDEFORMVERT); if(em) eve= em->verts.first; for(i=0; i<lvl->totvert; ++i) { @@ -384,7 +384,7 @@ void multires_create(Object *ob, Mesh *me) /* Load faces and fdata (MTFaces) */ lvl->totface= em ? BLI_countlist(&em->faces) : me->totface; lvl->faces= MEM_callocN(sizeof(MultiresFace)*lvl->totface,"multires faces"); - multires_update_customdata(me->mr->levels.first, em ? &em->fdata : &me->fdata, + multires_update_customdata(me->mr->levels.first, em, em ? &em->fdata : &me->fdata, &me->mr->fdata, CD_MTFACE); if(em) efa= em->faces.first; for(i=0; i<lvl->totface; ++i) { |