From fe9bd18a842f8a8ff013feab672c951505e62ba3 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Fri, 11 Nov 2005 18:58:45 +0000 Subject: [PATCH] Bugfix #3372 When using the pulldown menus for exiting weightpaint, it did not free octree tables for weightpaint, giving an error message on re-entering weightpaint. --- source/blender/src/header_view3d.c | 10 +++++----- source/blender/src/meshtools.c | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/source/blender/src/header_view3d.c b/source/blender/src/header_view3d.c index 5fa2893424e..05a792e4690 100644 --- a/source/blender/src/header_view3d.c +++ b/source/blender/src/header_view3d.c @@ -3931,7 +3931,7 @@ void do_view3d_buttons(short event) G.vd->flag &= ~V3D_MODE; G.f &= ~G_VERTEXPAINT; /* Switch off vertex paint */ G.f &= ~G_TEXTUREPAINT; /* Switch off texture paint */ - G.f &= ~G_WEIGHTPAINT; /* Switch off weight paint */ + if(G.f & G_WEIGHTPAINT) set_wpaint(); /* Switch off weight paint */ G.f &= ~G_FACESELECT; /* Switch off face select */ if(ob) exit_posemode(); /* exit posemode for active object */ if(G.obedit) exit_editmode(2); /* exit editmode and undo */ @@ -3941,7 +3941,7 @@ void do_view3d_buttons(short event) G.vd->flag &= ~V3D_MODE; G.f &= ~G_VERTEXPAINT; /* Switch off vertex paint */ G.f &= ~G_TEXTUREPAINT; /* Switch off texture paint */ - G.f &= ~G_WEIGHTPAINT; /* Switch off weight paint */ + if(G.f & G_WEIGHTPAINT) set_wpaint(); /* Switch off weight paint */ enter_editmode(); BIF_undo_push("Original"); // here, because all over code enter_editmode is abused @@ -3958,7 +3958,7 @@ void do_view3d_buttons(short event) G.vd->flag &= ~V3D_MODE; G.f &= ~G_VERTEXPAINT; /* Switch off vertex paint */ G.f &= ~G_TEXTUREPAINT; /* Switch off texture paint */ - G.f &= ~G_WEIGHTPAINT; /* Switch off weight paint */ + if(G.f & G_WEIGHTPAINT) set_wpaint(); /* Switch off weight paint */ if (G.obedit) exit_editmode(2); /* exit editmode and undo */ set_faceselect(); @@ -3968,7 +3968,7 @@ void do_view3d_buttons(short event) if (!(G.f & G_VERTEXPAINT)) { G.vd->flag &= ~V3D_MODE; G.f &= ~G_TEXTUREPAINT; /* Switch off texture paint */ - G.f &= ~G_WEIGHTPAINT; /* Switch off weight paint */ + if(G.f & G_WEIGHTPAINT) set_wpaint(); /* Switch off weight paint */ if(G.obedit) exit_editmode(2); /* exit editmode and undo */ set_vpaint(); @@ -3978,7 +3978,7 @@ void do_view3d_buttons(short event) if (!(G.f & G_TEXTUREPAINT)) { G.vd->flag &= ~V3D_MODE; G.f &= ~G_VERTEXPAINT; /* Switch off vertex paint */ - G.f &= ~G_WEIGHTPAINT; /* Switch off weight paint */ + if(G.f & G_WEIGHTPAINT) set_wpaint(); /* Switch off weight paint */ if(G.obedit) exit_editmode(2); /* exit editmode and undo */ G.f |= G_TEXTUREPAINT; /* Switch on texture paint flag */ diff --git a/source/blender/src/meshtools.c b/source/blender/src/meshtools.c index 422a10163fb..2a8ee7570af 100644 --- a/source/blender/src/meshtools.c +++ b/source/blender/src/meshtools.c @@ -757,8 +757,8 @@ int mesh_octree_table(Object *ob, float *co, char mode) if(div[1]==0.0f) div[1]= 1.0f; if(div[2]==0.0f) div[2]= 1.0f; - if(basetable) /* error should not happen, added to prevent coding errors */ - error("Mesh octree table coding error"); + if(basetable) /* happens when entering wpaint without closing it */ + mesh_octree_table(ob, co, 'e'); basetable= MEM_callocN(MOC_RES*MOC_RES*MOC_RES*sizeof(void *), "sym table");