[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