[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53333] trunk/blender/source/blender/ editors/object/object_bake.c: Fix: after multires baking, gpu textures were not getting invalidated

Antony Riakiotakis kalast at gmail.com
Wed Dec 26 21:38:21 CET 2012


Revision: 53333
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53333
Author:   psy-fi
Date:     2012-12-26 20:38:20 +0000 (Wed, 26 Dec 2012)
Log Message:
-----------
Fix: after multires baking, gpu textures were not getting invalidated
for images and viewport was not getting refreshed with new baked
textures. Now made sure this happens. The image list is copied to the
job custom data so that the custom data cleanup function can properly
delete them (if gpu image texture deletion does not happen on main
thread, image bindcodes will remain intact for original images)

Modified Paths:
--------------
    trunk/blender/source/blender/editors/object/object_bake.c

Modified: trunk/blender/source/blender/editors/object/object_bake.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_bake.c	2012-12-26 17:36:51 UTC (rev 53332)
+++ trunk/blender/source/blender/editors/object/object_bake.c	2012-12-26 20:38:20 UTC (rev 53333)
@@ -89,6 +89,7 @@
 	struct MultiresBakerJobData *next, *prev;
 	DerivedMesh *lores_dm, *hires_dm;
 	int simple, lvl, tot_lvl;
+	ListBase images;
 } MultiresBakerJobData;
 
 /* data passing to multires-baker job */
@@ -429,7 +430,7 @@
 
 		RE_multires_bake_images(&bkr);
 
-		BLI_freelistN(&bkr.image);
+		data->images = bkr.image;
 
 		baked_objects++;
 	}
@@ -439,12 +440,22 @@
 {
 	MultiresBakeJob *bkj = bkv;
 	MultiresBakerJobData *data, *next;
+	LinkData *link;
 
 	data = bkj->data.first;
 	while (data) {
 		next = data->next;
 		data->lores_dm->release(data->lores_dm);
 		data->hires_dm->release(data->hires_dm);
+
+		/* delete here, since this delete will be called from main thread */
+		for (link = data->images.first; link; link = link->next) {
+			Image *ima = (Image *)link->data;
+			GPU_free_image(ima);
+		}
+
+		BLI_freelistN(&data->images);
+
 		MEM_freeN(data);
 		data = next;
 	}




More information about the Bf-blender-cvs mailing list