[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29175] trunk/blender/source/blender/ editors: Small memory management tweaks
Matt Ebb
matt at mke3.net
Thu Jun 3 09:28:47 CEST 2010
Revision: 29175
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29175
Author: broken
Date: 2010-06-03 09:28:47 +0200 (Thu, 03 Jun 2010)
Log Message:
-----------
Small memory management tweaks
Modified Paths:
--------------
trunk/blender/source/blender/editors/physics/physics_fluid.c
trunk/blender/source/blender/editors/sound/sound_ops.c
Modified: trunk/blender/source/blender/editors/physics/physics_fluid.c
===================================================================
--- trunk/blender/source/blender/editors/physics/physics_fluid.c 2010-06-03 07:27:55 UTC (rev 29174)
+++ trunk/blender/source/blender/editors/physics/physics_fluid.c 2010-06-03 07:28:47 UTC (rev 29175)
@@ -297,6 +297,8 @@
static void free_domain_channels(FluidAnimChannels *channels)
{
+ if (!channels->timeAtFrame)
+ return;
MEM_freeN(channels->timeAtFrame);
channels->timeAtFrame = NULL;
MEM_freeN(channels->DomainGravity);
@@ -781,6 +783,26 @@
return FLUIDSIM_CBRET_CONTINUE;
}
+static void fluidbake_free_data(FluidAnimChannels *channels, ListBase *fobjects, elbeemSimulationSettings *fsset, FluidBakeJob *fb)
+{
+ free_domain_channels(channels);
+ MEM_freeN(channels);
+ channels = NULL;
+
+ free_all_fluidobject_channels(fobjects);
+ BLI_freelistN(fobjects);
+ MEM_freeN(fobjects);
+ fobjects = NULL;
+
+ MEM_freeN(fsset);
+ fsset = NULL;
+
+ if (fb) {
+ MEM_freeN(fb);
+ fb = NULL;
+ }
+}
+
int fluidsimBake(bContext *C, ReportList *reports, Object *fsDomain)
{
Scene *scene= CTX_data_scene(C);
@@ -827,13 +849,14 @@
noFrames = scene->r.efra - 0;
if(noFrames<=0) {
BKE_report(reports, RPT_ERROR, "No frames to export - check your animation range settings.");
+ fluidbake_free_data(channels, fobjects, fsset, fb);
return 0;
}
/* check scene for sane object/modifier settings */
- if (!fluid_validate_scene(reports, scene, fsDomain)) {
+ if (!fluid_validate_scene(reports, scene, fsDomain))
+ fluidbake_free_data(channels, fobjects, fsset, fb);
return 0;
- }
/* these both have to be valid, otherwise we wouldnt be here */
@@ -928,12 +951,7 @@
elbeemDebugOut(debugStrBuffer);
BKE_report(reports, RPT_ERROR, "Invalid object matrix.");
- free_domain_channels(channels);
- MEM_freeN(channels);
-
- free_all_fluidobject_channels(fobjects);
- BLI_freelistN(fobjects);
- MEM_freeN(fobjects);
+ fluidbake_free_data(channels, fobjects, fsset, fb);
return 0;
}
@@ -1023,12 +1041,7 @@
WM_jobs_start(CTX_wm_manager(C), steve);
/* ******** free stored animation data ******** */
- free_domain_channels(channels);
- MEM_freeN(channels);
-
- free_all_fluidobject_channels(fobjects);
- BLI_freelistN(fobjects);
- MEM_freeN(fobjects);
+ fluidbake_free_data(channels, fobjects, fsset, NULL);
// elbeemFree();
return 1;
Modified: trunk/blender/source/blender/editors/sound/sound_ops.c
===================================================================
--- trunk/blender/source/blender/editors/sound/sound_ops.c 2010-06-03 07:27:55 UTC (rev 29174)
+++ trunk/blender/source/blender/editors/sound/sound_ops.c 2010-06-03 07:28:47 UTC (rev 29175)
@@ -118,7 +118,7 @@
RNA_property_update(C, &pprop->ptr, pprop->prop);
}
- MEM_freeN(op->customdata);
+ if(op->customdata) MEM_freeN(op->customdata);
return OPERATOR_FINISHED;
}
More information about the Bf-blender-cvs
mailing list