[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13014] trunk/blender/source/blender: == Sculpt ==
Nicholas Bishop
nicholasbishop at gmail.com
Thu Dec 27 00:08:00 CET 2007
Revision: 13014
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13014
Author: nicholasbishop
Date: 2007-12-27 00:08:00 +0100 (Thu, 27 Dec 2007)
Log Message:
-----------
== Sculpt ==
Fixed a memory leak when using the interactive brush resize tool.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_sculpt.h
trunk/blender/source/blender/blenkernel/intern/scene.c
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/include/BDR_sculptmode.h
trunk/blender/source/blender/src/sculptmode.c
Modified: trunk/blender/source/blender/blenkernel/BKE_sculpt.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sculpt.h 2007-12-26 22:40:56 UTC (rev 13013)
+++ trunk/blender/source/blender/blenkernel/BKE_sculpt.h 2007-12-26 23:08:00 UTC (rev 13014)
@@ -27,6 +27,34 @@
* ***** END GPL LICENSE BLOCK *****
*/
+#ifndef BKE_SCULPT_H
+#define BKE_SCULPT_H
+
+struct NumInput;
+struct Scene;
+struct SculptData;
+struct SculptSession;
+
+typedef enum PropsetMode {
+ PropsetNone = 0,
+ PropsetSize,
+ PropsetStrength,
+ PropsetTexRot
+} PropsetMode;
+
+typedef struct PropsetData {
+ PropsetMode mode;
+ unsigned int tex;
+ short origloc[2];
+ float *texdata;
+
+ short origsize;
+ char origstrength;
+ float origtexrot;
+
+ struct NumInput *num;
+} PropsetData;
+
typedef struct SculptSession {
struct ProjVert *projverts;
@@ -62,3 +90,4 @@
void sculpt_vertexusers_free(struct SculptSession *ss);
void sculpt_reset_curve(struct SculptData *sd);
+#endif
Modified: trunk/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/scene.c 2007-12-26 22:40:56 UTC (rev 13013)
+++ trunk/blender/source/blender/blenkernel/intern/scene.c 2007-12-26 23:08:00 UTC (rev 13014)
@@ -659,6 +659,15 @@
MEM_freeN(ss->projverts);
if(ss->mats)
MEM_freeN(ss->mats);
+
+ if(ss->propset) {
+ if(ss->propset->texdata)
+ MEM_freeN(ss->propset->texdata);
+ if(ss->propset->num)
+ MEM_freeN(ss->propset->num);
+ MEM_freeN(ss->propset);
+ }
+
sculpt_vertexusers_free(ss);
if(ss->texcache)
MEM_freeN(ss->texcache);
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2007-12-26 22:40:56 UTC (rev 13013)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2007-12-26 23:08:00 UTC (rev 13014)
@@ -136,6 +136,7 @@
#include "BKE_sca.h" // for init_actuator
#include "BKE_scene.h"
#include "BKE_softbody.h" // sbNew()
+#include "BKE_sculpt.h"
#include "BKE_texture.h" // for open_plugin_tex
#include "BKE_utildefines.h" // SWITCH_INT DATA ENDB DNA1 O_BINARY GLOB USER TEST REND
#include "BKE_idprop.h"
Modified: trunk/blender/source/blender/include/BDR_sculptmode.h
===================================================================
--- trunk/blender/source/blender/include/BDR_sculptmode.h 2007-12-26 22:40:56 UTC (rev 13013)
+++ trunk/blender/source/blender/include/BDR_sculptmode.h 2007-12-26 23:08:00 UTC (rev 13014)
@@ -32,6 +32,7 @@
#include "DNA_listBase.h"
#include "DNA_vec_types.h"
+#include "BKE_sculpt.h"
#include "transform.h"
struct uiBlock;
@@ -47,26 +48,6 @@
struct SculptData;
struct SculptStroke;
-typedef enum PropsetMode {
- PropsetNone = 0,
- PropsetSize,
- PropsetStrength,
- PropsetTexRot
-} PropsetMode;
-
-typedef struct PropsetData {
- PropsetMode mode;
- unsigned int tex;
- short origloc[2];
- float *texdata;
-
- short origsize;
- char origstrength;
- float origtexrot;
-
- NumInput num;
-} PropsetData;
-
struct SculptSession *sculpt_session(void);
struct SculptData *sculpt_data(void);
Modified: trunk/blender/source/blender/src/sculptmode.c
===================================================================
--- trunk/blender/source/blender/src/sculptmode.c 2007-12-26 22:40:56 UTC (rev 13013)
+++ trunk/blender/source/blender/src/sculptmode.c 2007-12-26 23:08:00 UTC (rev 13014)
@@ -1313,6 +1313,7 @@
set_tex_angle(pd->origtexrot);
}
glDeleteTextures(1, &pd->tex);
+ MEM_freeN(pd->num);
MEM_freeN(pd->texdata);
MEM_freeN(pd);
ss->propset= NULL;
@@ -1353,7 +1354,9 @@
sculptmode_propset_calctex();
- pd->num.idx_max= 0;
+ if(!pd->num)
+ pd->num = MEM_callocN(sizeof(NumInput), "propset numinput");
+ pd->num->idx_max= 0;
}
pd->mode= mode;
@@ -1391,11 +1394,11 @@
BrushData *brush= sculptmode_brush();
char valset= 0;
- handleNumInput(&pd->num, event);
+ handleNumInput(pd->num, event);
- if(hasNumInput(&pd->num)) {
+ if(hasNumInput(pd->num)) {
float val;
- applyNumInput(&pd->num, &val);
+ applyNumInput(pd->num, &val);
if(pd->mode==PropsetSize)
brush->size= val;
else if(pd->mode==PropsetStrength)
@@ -1409,7 +1412,7 @@
switch(event) {
case MOUSEX:
case MOUSEY:
- if(!hasNumInput(&pd->num)) {
+ if(!hasNumInput(pd->num)) {
char ctrl= G.qual & LR_CTRLKEY;
getmouseco_areawin(mouse);
tmp[0]= pd->origloc[0]-mouse[0];
More information about the Bf-blender-cvs
mailing list