[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26974] trunk/blender/source: Revert render slots commit for release, I can't find the bug or even redo

Brecht Van Lommel brecht at blender.org
Tue Feb 16 20:24:06 CET 2010


Revision: 26974
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26974
Author:   blendix
Date:     2010-02-16 20:24:04 +0100 (Tue, 16 Feb 2010)

Log Message:
-----------
Revert render slots commit for release, I can't find the bug or even redo
it myself, there will still be render slots just old implementation.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_image.h
    trunk/blender/source/blender/blenkernel/BKE_material.h
    trunk/blender/source/blender/blenkernel/intern/displist.c
    trunk/blender/source/blender/blenkernel/intern/image.c
    trunk/blender/source/blender/blenkernel/intern/material.c
    trunk/blender/source/blender/blenkernel/intern/sequencer.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/blenloader/intern/writefile.c
    trunk/blender/source/blender/editors/object/object_bake.c
    trunk/blender/source/blender/editors/render/render_preview.c
    trunk/blender/source/blender/editors/screen/screen_ops.c
    trunk/blender/source/blender/editors/space_file/writeimage.c
    trunk/blender/source/blender/editors/space_image/image_buttons.c
    trunk/blender/source/blender/editors/space_image/image_draw.c
    trunk/blender/source/blender/editors/space_image/image_ops.c
    trunk/blender/source/blender/editors/space_node/node_edit.c
    trunk/blender/source/blender/makesdna/DNA_image_types.h
    trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_composite.c
    trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_image.c
    trunk/blender/source/blender/render/extern/include/RE_pipeline.h
    trunk/blender/source/blender/render/intern/source/convertblender.c
    trunk/blender/source/blender/render/intern/source/envmap.c
    trunk/blender/source/blender/render/intern/source/pipeline.c
    trunk/blender/source/creator/creator.c

Modified: trunk/blender/source/blender/blenkernel/BKE_image.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_image.h	2010-02-16 19:22:37 UTC (rev 26973)
+++ trunk/blender/source/blender/blenkernel/BKE_image.h	2010-02-16 19:24:04 UTC (rev 26974)
@@ -142,9 +142,6 @@
 /* for multilayer images as well as for render-viewer */
 struct RenderResult *BKE_image_acquire_renderresult(struct Scene *scene, struct Image *ima);
 void BKE_image_release_renderresult(struct Scene *scene, struct Image *ima);
-
-/* for multiple slot render, call this before render */
-void BKE_image_backup_render(struct Scene *scene, struct Image *ima);
 	
 /* goes over all textures that use images */
 void	BKE_image_free_all_textures(void);

Modified: trunk/blender/source/blender/blenkernel/BKE_material.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_material.h	2010-02-16 19:22:37 UTC (rev 26973)
+++ trunk/blender/source/blender/blenkernel/BKE_material.h	2010-02-16 19:24:04 UTC (rev 26974)
@@ -77,6 +77,8 @@
 
 void ramp_blend(int type, float *r, float *g, float *b, float fac, float *col);
 
+struct Material *copy_material_for_render(struct Material *ma);
+
 /* copy/paste */
 void clear_matcopybuf(void);
 void free_matcopybuf(void);

Modified: trunk/blender/source/blender/blenkernel/intern/displist.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/displist.c	2010-02-16 19:22:37 UTC (rev 26973)
+++ trunk/blender/source/blender/blenkernel/intern/displist.c	2010-02-16 19:24:04 UTC (rev 26974)
@@ -321,9 +321,9 @@
 	/* XXX ugly global still, but we can't do preview while rendering */
 	if(G.rendering==0) {
 		
-		Render *re= RE_GetRender("_Shade View_");
+		Render *re= RE_GetRender("_Shade View_", RE_SLOT_DEFAULT);
 		if(re==NULL) {
-			re= RE_NewRender("_Shade View_");
+			re= RE_NewRender("_Shade View_", RE_SLOT_DEFAULT);
 		
 			RE_Database_Baking(re, scene, 0, 0);	/* 0= no faces */
 		}
@@ -337,7 +337,7 @@
 /* called on file reading */
 void fastshade_free_render(void)
 {
-	Render *re= RE_GetRender("_Shade View_");
+	Render *re= RE_GetRender("_Shade View_", RE_SLOT_DEFAULT);
 	
 	if(re) {
 		RE_Database_Free(re);

Modified: trunk/blender/source/blender/blenkernel/intern/image.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/image.c	2010-02-16 19:22:37 UTC (rev 26973)
+++ trunk/blender/source/blender/blenkernel/intern/image.c	2010-02-16 19:24:04 UTC (rev 26974)
@@ -236,7 +236,7 @@
 	
 	if(ima->anim) IMB_free_anim(ima->anim);
 	ima->anim= NULL;
-
+	
 	if(ima->rr) {
 		RE_FreeRenderResult(ima->rr);
 		ima->rr= NULL;
@@ -250,8 +250,6 @@
 /* called by library too, do not free ima itself */
 void free_image(Image *ima)
 {
-	int a;
-
 	image_free_buffers(ima);
 	if (ima->packedfile) {
 		freePackedFile(ima->packedfile);
@@ -262,11 +260,9 @@
 	if (ima->preview) {
 		BKE_previewimg_free(&ima->preview);
 	}
-	for(a=0; a<IMA_MAX_RENDER_SLOT; a++) {
-		if(ima->renders[a]) {
-			RE_FreeRenderResult(ima->renders[a]);
-			ima->renders[a]= NULL;
-		}
+	if (ima->render_text) {
+		MEM_freeN(ima->render_text);
+		ima->render_text= NULL;
 	}
 }
 
@@ -1092,7 +1088,7 @@
 	}
 
 	{
-		Render *re= RE_GetRender(scene->id.name);
+		Render *re= RE_GetRender(scene->id.name, RE_SLOT_RENDERING);
 		RenderStats *stats= re ? RE_GetStats(re):NULL;
 
 		if (stats && (scene->r.stamp & R_STAMP_RENDERTIME)) {
@@ -1598,50 +1594,22 @@
 	return rpass;
 }
 
-RenderResult *BKE_image_acquire_renderresult(Scene *scene, Image *ima)
+RenderResult *BKE_image_acquire_renderresult(struct Scene *scene, Image *ima)
 {
-	if(ima->rr) {
+	if(ima->rr)
 		return ima->rr;
-	}
-	else if(ima->type==IMA_TYPE_R_RESULT) {
-		if(ima->render_slot == ima->last_render_slot)
-			return RE_AcquireResultRead(RE_GetRender(scene->id.name));
-		else
-			return ima->renders[ima->render_slot];
-	}
-	else
-		return NULL;
+	else if(ima->type==IMA_TYPE_R_RESULT)
+		return RE_AcquireResultRead(RE_GetRender(scene->id.name, RE_SLOT_VIEW));
+	return NULL;
 }
 
-void BKE_image_release_renderresult(Scene *scene, Image *ima)
+void BKE_image_release_renderresult(struct Scene *scene, Image *ima)
 {
 	if(ima->rr);
-	else if(ima->type==IMA_TYPE_R_RESULT) {
-		if(ima->render_slot == ima->last_render_slot)
-			RE_ReleaseResult(RE_GetRender(scene->id.name));
-	}
+	else if(ima->type==IMA_TYPE_R_RESULT)
+		RE_ReleaseResult(RE_GetRender(scene->id.name, RE_SLOT_VIEW));
 }
 
-void BKE_image_backup_render(Scene *scene, Image *ima)
-{
-	/* called right before rendering, ima->renders contains render
-	   result pointers for everything but the current render */
-	Render *re= RE_GetRender(scene->id.name);
-	int slot= ima->render_slot, last= ima->last_render_slot;
-
-	if(slot != last) {
-		if(ima->renders[slot]) {
-			RE_FreeRenderResult(ima->renders[slot]);
-			ima->renders[slot]= NULL;
-		}
-
-		ima->renders[last]= NULL;
-		RE_SwapResult(re, &ima->renders[last]);
-	}
-
-	ima->last_render_slot= slot;
-}
-
 /* after imbuf load, openexr type can return with a exrhandle open */
 /* in that case we have to build a render-result */
 static void image_create_multilayer(Image *ima, ImBuf *ibuf, int framenr)
@@ -1949,26 +1917,17 @@
 {
 	Render *re= NULL;
 	RenderResult *rr= NULL;
-	int from_render= (ima->render_slot == ima->last_render_slot);
 	
 	/* if we the caller is not going to release the lock, don't give the image */
 	if(!lock_r)
 		return NULL;
 
 	if(iuser && iuser->scene) {
-		re= RE_GetRender(iuser->scene->id.name);
+		re= RE_GetRender(iuser->scene->id.name, RE_SLOT_VIEW);
+		rr= RE_AcquireResultRead(re);
 
-		/* for the last render we get result for Render itself,
-		   for others a RenderResult is stored in the Image */
-		if(from_render) {
-			rr= RE_AcquireResultRead(re);
-			/* release is done in BKE_image_release_ibuf using lock_r */
-			*lock_r= re;
-		}
-		else {
-			rr= ima->renders[ima->render_slot];
-			*lock_r= NULL;
-		}
+		/* release is done in BKE_image_release_ibuf using lock_r */
+		*lock_r= re;
 	}
 
 	if(rr==NULL)
@@ -1996,15 +1955,9 @@
 		channels= 4;
 		layer= (iuser)? iuser->layer: 0;
 		pass= (iuser)? iuser->pass: 0;
-
-		memset(&rres, 0, sizeof(rres));
 		
 		/* this gives active layer, composite or seqence result */
-		if(from_render)
-			RE_AcquireResultImage(RE_GetRender(iuser->scene->id.name), &rres);
-		else if(rr)
-			rres= *rr;
-
+		RE_AcquireResultImage(RE_GetRender(iuser->scene->id.name, RE_SLOT_VIEW), &rres);
 		rect= (unsigned int *)rres.rect32;
 		rectf= rres.rectf;
 		rectz= rres.rectz;
@@ -2059,15 +2012,13 @@
 			ibuf->flags |= IB_zbuffloat;
 			ibuf->dither= dither;
 
-			if(from_render)
-				RE_ReleaseResultImage(re);
+			RE_ReleaseResultImage(re);
 
 			ima->ok= IMA_OK_LOADED;
 			return ibuf;
 		}
 
-		if(from_render)
-			RE_ReleaseResultImage(re);
+		RE_ReleaseResultImage(re);
 	}
 	
 	return NULL;

Modified: trunk/blender/source/blender/blenkernel/intern/material.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/material.c	2010-02-16 19:22:37 UTC (rev 26973)
+++ trunk/blender/source/blender/blenkernel/intern/material.c	2010-02-16 19:24:04 UTC (rev 26974)
@@ -204,24 +204,27 @@
 	return ma;	
 }
 
-Material *copy_material(Material *ma)
+static Material *copy_material_intern(Material *ma, int for_render)
 {
 	Material *man;
 	int a;
 	
 	man= copy_libblock(ma);
+	if(for_render)
+		BLI_remlink(&G.main->mat, man);
 	
+	if(!for_render) {
 #if 0 // XXX old animation system
-	id_us_plus((ID *)man->ipo);
+		id_us_plus((ID *)man->ipo);
 #endif // XXX old animation system
-	id_us_plus((ID *)man->group);
+		id_us_plus((ID *)man->group);
+	}
 	
-	
 	for(a=0; a<MAX_MTEX; a++) {
 		if(ma->mtex[a]) {
 			man->mtex[a]= MEM_mallocN(sizeof(MTex), "copymaterial");
 			memcpy(man->mtex[a], ma->mtex[a], sizeof(MTex));
-			id_us_plus((ID *)man->mtex[a]->tex);
+			if(!for_render) id_us_plus((ID *)man->mtex[a]->tex);
 		}
 	}
 	
@@ -239,6 +242,16 @@
 	return man;
 }
 
+Material *copy_material_for_render(Material *ma)
+{
+	return copy_material_intern(ma, 1);
+}
+
+Material *copy_material(Material *ma)
+{
+	return copy_material_intern(ma, 0);
+}
+
 void make_local_material(Material *ma)
 {
 	Object *ob;

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c	2010-02-16 19:22:37 UTC (rev 26973)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c	2010-02-16 19:24:04 UTC (rev 26974)
@@ -2149,9 +2149,9 @@
 			oldcfra = seq->scene->r.cfra;
 
 			if(rendering)
-				re= RE_NewRender(" do_build_seq_ibuf");
+				re= RE_NewRender(" do_build_seq_ibuf", RE_SLOT_DEFAULT);
 			else
-				re= RE_NewRender(sce->id.name);
+				re= RE_NewRender(sce->id.name, RE_SLOT_VIEW);
 			
 			/* prevent eternal loop */
 			doseq= scene->r.scemode & R_DOSEQ;

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2010-02-16 19:22:37 UTC (rev 26973)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2010-02-16 19:24:04 UTC (rev 26974)
@@ -1191,7 +1191,6 @@
 {
 	Image *ima= oldmain->image.first;
 	Scene *sce= oldmain->scene.first;
-	int a;
 	
 	fd->imamap= oldnewmap_new();
 	
@@ -1201,9 +1200,6 @@
 			oldnewmap_insert(fd->imamap, ibuf, ibuf, 0);
 		if(ima->gputexture)
 			oldnewmap_insert(fd->imamap, ima->gputexture, ima->gputexture, 0);
-		for(a=0; a<IMA_MAX_RENDER_SLOT; a++)
-			if(ima->renders[a])
-				oldnewmap_insert(fd->imamap, ima->renders[a], ima->renders[a], 0);
 	}
 	for(; sce; sce= sce->id.next) {
 		if(sce->nodetree) {
@@ -1221,7 +1217,7 @@
 	OldNew *entry= fd->imamap->entries;
 	Image *ima= oldmain->image.first;
 	Scene *sce= oldmain->scene.first;
-	int i, a;
+	int i;
 	
 	/* used entries were restored, so we put them to zero */
 	for (i=0; i<fd->imamap->nentries; i++, entry++) {
@@ -1243,8 +1239,6 @@
 		}
 
 		ima->gputexture= newimaadr(fd, ima->gputexture);
-		for(a=0; a<IMA_MAX_RENDER_SLOT; a++)
-			ima->renders[a]= newimaadr(fd, ima->renders[a]);
 	}
 	for(; sce; sce= sce->id.next) {
 		if(sce->nodetree) {
@@ -2666,8 +2660,7 @@
 	ima->anim= NULL;
 	ima->rr= NULL;
 	ima->repbind= NULL;
-	memset(ima->renders, 0, sizeof(ima->renders));

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list