From 41965e197c2ba9c62a26402d08d08bf09a5dd0f2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 28 Sep 2012 14:51:33 +0000 Subject: - transform's createTransCurveVerts was using both CTX_data_edit_object(C) and t->obedit, now only use t->obedit. - freeing bez-triple handle data was being done in a loop for many types which don't support bezier handle data. --- source/blender/editors/transform/transform_conversions.c | 13 ++++++------- source/blender/editors/transform/transform_generics.c | 13 +++++++++---- 2 files changed, 15 insertions(+), 11 deletions(-) (limited to 'source/blender/editors/transform') diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 900f265c6cc..540cbb97609 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -1334,10 +1334,9 @@ static TransDataCurveHandleFlags *initTransDataCurveHandles(TransData *td, struc return hdata; } -static void createTransCurveVerts(bContext *C, TransInfo *t) +static void createTransCurveVerts(TransInfo *t) { - Object *obedit = CTX_data_edit_object(C); - Curve *cu = obedit->data; + Curve *cu = t->obedit->data; TransData *td = NULL; Nurb *nu; BezTriple *bezt; @@ -1935,9 +1934,9 @@ static void VertsToTransData(TransInfo *t, TransData *td, TransDataExtension *tx } } -static void createTransEditVerts(bContext *C, TransInfo *t) +static void createTransEditVerts(TransInfo *t) { - ToolSettings *ts = CTX_data_tool_settings(C); + ToolSettings *ts = t->scene->toolsettings; TransData *tob = NULL; TransDataExtension *tx = NULL; BMEditMesh *em = BMEdit_FromObject(t->obedit); @@ -6425,10 +6424,10 @@ void createTransData(bContext *C, TransInfo *t) else if (t->obedit) { t->ext = NULL; if (t->obedit->type == OB_MESH) { - createTransEditVerts(C, t); + createTransEditVerts(t); } else if (ELEM(t->obedit->type, OB_CURVE, OB_SURF)) { - createTransCurveVerts(C, t); + createTransCurveVerts(t); } else if (t->obedit->type == OB_LATTICE) { createTransLatticeVerts(t); diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 26ae355a827..b8db0b575cf 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -1302,12 +1302,17 @@ void postTrans(bContext *C, TransInfo *t) /* postTrans can be called when nothing is selected, so data is NULL already */ if (t->data) { - int a; /* free data malloced per trans-data */ - for (a = 0, td = t->data; a < t->total; a++, td++) { - if (td->flag & TD_BEZTRIPLE) - MEM_freeN(td->hdata); + if ((t->obedit && ELEM(t->obedit->type, OB_CURVE, OB_SURF)) || + (t->spacetype == SPACE_IPO)) + { + int a; + for (a = 0, td = t->data; a < t->total; a++, td++) { + if (td->flag & TD_BEZTRIPLE) { + MEM_freeN(td->hdata); + } + } } MEM_freeN(t->data); } -- cgit v1.2.3