[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48719] trunk/blender/source/blender: fix [#32020] Image will not render in second (any scene other than first) if scene name is longer than 28 characters

Campbell Barton ideasman42 at gmail.com
Sun Jul 8 02:04:42 CEST 2012


Revision: 48719
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48719
Author:   campbellbarton
Date:     2012-07-08 00:04:41 +0000 (Sun, 08 Jul 2012)
Log Message:
-----------
fix [#32020] Image will not render in second (any scene other than first) if scene name is longer than 28 characters

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_image/image_buttons.c
    trunk/blender/source/blender/imbuf/intern/openexr/openexr_api.cpp
    trunk/blender/source/blender/imbuf/intern/openexr/openexr_multi.h
    trunk/blender/source/blender/imbuf/intern/openexr/openexr_stub.cpp
    trunk/blender/source/blender/makesdna/DNA_ID.h
    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/external_engine.c
    trunk/blender/source/blender/render/intern/source/occlusion.c
    trunk/blender/source/blender/render/intern/source/pipeline.c
    trunk/blender/source/blender/render/intern/source/render_result.c

Modified: trunk/blender/source/blender/editors/space_image/image_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/image_buttons.c	2012-07-08 00:00:51 UTC (rev 48718)
+++ trunk/blender/source/blender/editors/space_image/image_buttons.c	2012-07-08 00:04:41 UTC (rev 48719)
@@ -372,7 +372,7 @@
 static char *layer_menu(RenderResult *rr, short *UNUSED(curlay))
 {
 	RenderLayer *rl;
-	int len = 64 + 32 * BLI_countlist(&rr->layers);
+	int len = 64 + RE_MAXNAME * BLI_countlist(&rr->layers);
 	short a, nr = 0;
 	char *str = MEM_callocN(len, "menu layers");
 	

Modified: trunk/blender/source/blender/imbuf/intern/openexr/openexr_api.cpp
===================================================================
--- trunk/blender/source/blender/imbuf/intern/openexr/openexr_api.cpp	2012-07-08 00:00:51 UTC (rev 48718)
+++ trunk/blender/source/blender/imbuf/intern/openexr/openexr_api.cpp	2012-07-08 00:04:41 UTC (rev 48719)
@@ -665,9 +665,9 @@
 }
 
 void IMB_exr_multilayer_convert(void *handle, void *base,
-                                void * (*addlayer)(void *base, char *str),
-                                void (*addpass)(void *base, void *lay, char *str,
-                                                float *rect, int totchan, char *chan_id))
+                                void * (*addlayer)(void *base, const char *str),
+                                void (*addpass)(void *base, void *lay, const char *str,
+                                                float *rect, int totchan, const char *chan_id))
 {
 	ExrHandle *data = (ExrHandle *)handle;
 	ExrLayer *lay;
@@ -908,14 +908,6 @@
 
 /* ********************************************************* */
 
-typedef struct RGBA {
-	float r;
-	float g;
-	float b;
-	float a;
-} RGBA;
-
-
 /* debug only */
 static void exr_print_filecontents(InputFile *file)
 {

Modified: trunk/blender/source/blender/imbuf/intern/openexr/openexr_multi.h
===================================================================
--- trunk/blender/source/blender/imbuf/intern/openexr/openexr_multi.h	2012-07-08 00:00:51 UTC (rev 48718)
+++ trunk/blender/source/blender/imbuf/intern/openexr/openexr_multi.h	2012-07-08 00:04:41 UTC (rev 48719)
@@ -37,9 +37,9 @@
 
 /* Note: as for now openexr only supports 32 chars in channel names.
  * This api also supports max 8 channels per pass now. easy to fix! */
-#define EXR_LAY_MAXNAME     19
+#define EXR_LAY_MAXNAME     51
 #define EXR_PASS_MAXNAME    11
-#define EXR_TOT_MAXNAME     32
+#define EXR_TOT_MAXNAME     64
 #define EXR_PASS_MAXCHAN    8
 
 
@@ -62,8 +62,8 @@
 void    IMB_exrtile_clear_channels(void *handle);
 
 void    IMB_exr_multilayer_convert(void *handle, void *base,
-                                   void * (*addlayer)(void *base, char *str),
-                                   void (*addpass)(void *base, void *lay, char *str, float *rect, int totchan, char *chan_id));
+                                   void * (*addlayer)(void *base, const char *str),
+                                   void (*addpass)(void *base, void *lay, const char *str, float *rect, int totchan, const char *chan_id));
 
 void    IMB_exr_close(void *handle);
 

Modified: trunk/blender/source/blender/imbuf/intern/openexr/openexr_stub.cpp
===================================================================
--- trunk/blender/source/blender/imbuf/intern/openexr/openexr_stub.cpp	2012-07-08 00:00:51 UTC (rev 48718)
+++ trunk/blender/source/blender/imbuf/intern/openexr/openexr_stub.cpp	2012-07-08 00:04:41 UTC (rev 48719)
@@ -48,8 +48,8 @@
 void	IMB_exrtile_clear_channels	(void *handle) { (void)handle; }
 
 void    IMB_exr_multilayer_convert	(void *handle, void *base,  
-									 void * (*addlayer)(void *base, char *str), 
-									 void (*addpass)(void *base, void *lay, char *str, float *rect, int totchan, char *chan_id))
+									 void * (*addlayer)(void *base, const char *str),
+									 void (*addpass)(void *base, void *lay, const char *str, float *rect, int totchan, const char *chan_id))
 									{
 										(void)handle; (void)base; (void)addlayer; (void)addpass;
 									}

Modified: trunk/blender/source/blender/makesdna/DNA_ID.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_ID.h	2012-07-08 00:00:51 UTC (rev 48718)
+++ trunk/blender/source/blender/makesdna/DNA_ID.h	2012-07-08 00:04:41 UTC (rev 48719)
@@ -108,7 +108,7 @@
 	void *next, *prev;
 	struct ID *newid;
 	struct Library *lib;
-	char name[66];
+	char name[66]; /* MAX_ID_NAME */
 	short pad, us;
 	/**
 	 * LIB_... flags report on status of the datablock this ID belongs

Modified: trunk/blender/source/blender/render/extern/include/RE_pipeline.h
===================================================================
--- trunk/blender/source/blender/render/extern/include/RE_pipeline.h	2012-07-08 00:00:51 UTC (rev 48718)
+++ trunk/blender/source/blender/render/extern/include/RE_pipeline.h	2012-07-08 00:04:41 UTC (rev 48719)
@@ -51,9 +51,9 @@
 /* this include is what is exposed of render to outside world */
 /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 
+/* length of the scene name + passname */
+#define RE_MAXNAME	((MAX_ID_NAME - 2) + 10)
 
-#define RE_MAXNAME	32
-
 /* only used as handle */
 typedef struct Render Render;
 
@@ -81,7 +81,7 @@
 	struct RenderLayer *next, *prev;
 	
 	/* copy of RenderData */
-	char name[RE_MAXNAME];		
+	char name[RE_MAXNAME];
 	unsigned int lay, lay_zmask, lay_exclude;
 	int layflag, passflag, pass_xor;		
 	
@@ -144,8 +144,7 @@
 	short curfield, curblur, curpart, partsdone, convertdone, curfsa;
 	double starttime, lastframetime;
 	const char *infostr, *statstr;
-	char scenename[32];
-	
+	char scene_name[MAX_ID_NAME - 2];
 } RenderStats;
 
 /* *********************** API ******************** */

Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c	2012-07-08 00:00:51 UTC (rev 48718)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c	2012-07-08 00:04:41 UTC (rev 48719)
@@ -5038,7 +5038,7 @@
 	/* per second, per object, stats print this */
 	re->i.infostr= "Preparing Scene data";
 	re->i.cfra= scene->r.cfra;
-	BLI_strncpy(re->i.scenename, scene->id.name+2, sizeof(re->i.scenename));
+	BLI_strncpy(re->i.scene_name, scene->id.name + 2, sizeof(re->i.scene_name));
 	
 	/* XXX add test if dbase was filled already? */
 	

Modified: trunk/blender/source/blender/render/intern/source/external_engine.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/external_engine.c	2012-07-08 00:00:51 UTC (rev 48718)
+++ trunk/blender/source/blender/render/intern/source/external_engine.c	2012-07-08 00:04:41 UTC (rev 48719)
@@ -305,7 +305,7 @@
 
 	/* set render info */
 	re->i.cfra = re->scene->r.cfra;
-	BLI_strncpy(re->i.scenename, re->scene->id.name + 2, sizeof(re->i.scenename));
+	BLI_strncpy(re->i.scene_name, re->scene->id.name + 2, sizeof(re->i.scene_name));
 	re->i.totface = re->i.totvert = re->i.totstrand = re->i.totlamp = re->i.tothalo = 0;
 
 	/* render */

Modified: trunk/blender/source/blender/render/intern/source/occlusion.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/occlusion.c	2012-07-08 00:00:51 UTC (rev 48718)
+++ trunk/blender/source/blender/render/intern/source/occlusion.c	2012-07-08 00:04:41 UTC (rev 48719)
@@ -768,6 +768,8 @@
 	r[2] = v1[2] + fac * (v2[2] - v1[2]);
 }
 
+/* TODO: exact duplicate of ff_visible_quad() in math_geom.c
+ *       why not de-duplicate? (also above helper func) */
 static int occ_visible_quad(const float p[3], const float n[3],
                             const float v0[3], const float v1[3], const float v2[3],
                             float q0[3], float q1[3], float q2[3], float q3[3])
@@ -1129,6 +1131,8 @@
 	} 
 }
 
+/* TODO: exact duplicate of ff_quad_form_factor() in math_geom.c
+ *       why not de-duplicate? (also above helper func) */
 static float occ_quad_form_factor(const float p[3], const float n[3], const float q0[3], const float q1[3], const float q2[3], const float q3[3])
 {
 	float r0[3], r1[3], r2[3], r3[3], g0[3], g1[3], g2[3], g3[3];

Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c	2012-07-08 00:00:51 UTC (rev 48718)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c	2012-07-08 00:04:41 UTC (rev 48719)
@@ -166,9 +166,9 @@
 	}
 	else {
 		if (rs->tothalo)
-			fprintf(stdout, "Sce: %s Ve:%d Fa:%d Ha:%d La:%d", rs->scenename, rs->totvert, rs->totface, rs->tothalo, rs->totlamp);
+			fprintf(stdout, "Sce: %s Ve:%d Fa:%d Ha:%d La:%d", rs->scene_name, rs->totvert, rs->totface, rs->tothalo, rs->totlamp);
 		else
-			fprintf(stdout, "Sce: %s Ve:%d Fa:%d La:%d", rs->scenename, rs->totvert, rs->totface, rs->totlamp);
+			fprintf(stdout, "Sce: %s Ve:%d Fa:%d La:%d", rs->scene_name, rs->totvert, rs->totface, rs->totlamp);
 	}
 
 	BLI_callback_exec(G.main, NULL, BLI_CB_EVT_RENDER_STATS);

Modified: trunk/blender/source/blender/render/intern/source/render_result.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/render_result.c	2012-07-08 00:00:51 UTC (rev 48718)
+++ trunk/blender/source/blender/render/intern/source/render_result.c	2012-07-08 00:04:41 UTC (rev 48719)
@@ -582,7 +582,7 @@
 }
 
 /* callbacks for render_result_new_from_exr */
-static void *ml_addlayer_cb(void *base, char *str)
+static void *ml_addlayer_cb(void *base, const char *str)
 {
 	RenderResult *rr = base;
 	RenderLayer *rl;
@@ -594,7 +594,7 @@
 	return rl;
 }
 
-static void ml_addpass_cb(void *UNUSED(base), void *lay, char *str, float *rect, int totchan, char *chan_id)
+static void ml_addpass_cb(void *UNUSED(base), void *lay, const char *str, float *rect, int totchan, const char *chan_id)
 {
 	RenderLayer *rl = lay;
 	RenderPass *rpass = MEM_callocN(sizeof(RenderPass), "loaded pass");
@@ -618,7 +618,7 @@
 /* from imbuf, if a handle was returned we convert this to render result */

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list