[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14567] trunk/blender/source/blender/ blenkernel: == Multires ==
Nicholas Bishop
nicholasbishop at gmail.com
Sun Apr 27 20:26:43 CEST 2008
Revision: 14567
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14567
Author: nicholasbishop
Date: 2008-04-27 20:26:43 +0200 (Sun, 27 Apr 2008)
Log Message:
-----------
== Multires ==
Fixed bug #9680, Crash on render
Caused by multires sometimes looking at editmesh data rather than mesh data during render
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_multires.h
trunk/blender/source/blender/blenkernel/intern/multires-firstlevel.c
trunk/blender/source/blender/blenkernel/intern/multires.c
Modified: trunk/blender/source/blender/blenkernel/BKE_multires.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_multires.h 2008-04-27 18:26:20 UTC (rev 14566)
+++ trunk/blender/source/blender/blenkernel/BKE_multires.h 2008-04-27 18:26:43 UTC (rev 14567)
@@ -61,7 +61,7 @@
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,
Modified: trunk/blender/source/blender/blenkernel/intern/multires-firstlevel.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/multires-firstlevel.c 2008-04-27 18:26:20 UTC (rev 14566)
+++ trunk/blender/source/blender/blenkernel/intern/multires-firstlevel.c 2008-04-27 18:26:43 UTC (rev 14567)
@@ -75,7 +75,7 @@
}
/* 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 @@
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_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);
}
Modified: trunk/blender/source/blender/blenkernel/intern/multires.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/multires.c 2008-04-27 18:26:20 UTC (rev 14566)
+++ trunk/blender/source/blender/blenkernel/intern/multires.c 2008-04-27 18:26:43 UTC (rev 14567)
@@ -373,7 +373,7 @@
/* 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 @@
/* 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) {
More information about the Bf-blender-cvs
mailing list