[Bf-blender-cvs] [1a59b63] master: Show error when unsupported movie format used

Campbell Barton noreply at git.blender.org
Tue Sep 22 19:07:34 CEST 2015


Commit: 1a59b63e1c450e034d9aad800a7707d01c86ce6d
Author: Campbell Barton
Date:   Wed Sep 23 02:40:08 2015 +1000
Branches: master
https://developer.blender.org/rB1a59b63e1c450e034d9aad800a7707d01c86ce6d

Show error when unsupported movie format used

Was silently failing.

===================================================================

M	source/blender/blenkernel/intern/writeavi.c
M	source/blender/editors/render/render_opengl.c
M	source/blender/editors/screen/screendump.c
M	source/blender/render/intern/source/pipeline.c

===================================================================

diff --git a/source/blender/blenkernel/intern/writeavi.c b/source/blender/blenkernel/intern/writeavi.c
index cec455e..82e4405 100644
--- a/source/blender/blenkernel/intern/writeavi.c
+++ b/source/blender/blenkernel/intern/writeavi.c
@@ -147,7 +147,9 @@ bMovieHandle *BKE_movie_handle_get(const char imtype)
 #endif
 
 	/* in case all above are disabled */
-	(void)imtype;return &mh;
+	(void)imtype;
+
+	return (mh.append_movie != append_stub) ? &mh : NULL;
 }
 
 /* ****************************************************************** */
@@ -298,8 +300,10 @@ static void context_free_avi(void *context_v)
 void BKE_movie_filepath_get(char *string, RenderData *rd, bool preview, const char *suffix)
 {
 	bMovieHandle *mh = BKE_movie_handle_get(rd->im_format.imtype);
-	if (mh->get_movie_path)
+	if (mh && mh->get_movie_path) {
 		mh->get_movie_path(string, rd, preview, suffix);
-	else
+	}
+	else {
 		string[0] = '\0';
+	}
 }
diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c
index c718dfa..fe40227 100644
--- a/source/blender/editors/render/render_opengl.c
+++ b/source/blender/editors/render/render_opengl.c
@@ -706,7 +706,7 @@ static void screen_opengl_render_cancel(bContext *C, wmOperator *op)
 }
 
 /* share between invoke and exec */
-static int screen_opengl_render_anim_initialize(bContext *C, wmOperator *op)
+static bool screen_opengl_render_anim_initialize(bContext *C, wmOperator *op)
 {
 	/* initialize animation */
 	OGLRender *oglrender;
@@ -722,9 +722,16 @@ static int screen_opengl_render_anim_initialize(bContext *C, wmOperator *op)
 		size_t i, width, height;
 
 		BKE_scene_multiview_videos_dimensions_get(&scene->r, oglrender->sizex, oglrender->sizey, &width, &height);
-		oglrender->movie_ctx_arr = MEM_mallocN(sizeof(void *) * oglrender->totvideos, "Movies");
 		oglrender->mh = BKE_movie_handle_get(scene->r.im_format.imtype);
 
+		if (oglrender->mh == NULL) {
+			BKE_report(oglrender->reports, RPT_ERROR, "Movie format unsupported");
+			screen_opengl_render_end(C, oglrender);
+			return false;
+		}
+
+		oglrender->movie_ctx_arr = MEM_mallocN(sizeof(void *) * oglrender->totvideos, "Movies");
+
 		for (i = 0; i < oglrender->totvideos; i++) {
 			const char *suffix = BKE_scene_multiview_view_id_suffix_get(&scene->r, i);
 
@@ -733,7 +740,7 @@ static int screen_opengl_render_anim_initialize(bContext *C, wmOperator *op)
 			                                oglrender->sizey, oglrender->reports, PRVRANGEON != 0, suffix))
 			{
 				screen_opengl_render_end(C, oglrender);
-				return 0;
+				return false;
 			}
 		}
 	}
@@ -742,7 +749,7 @@ static int screen_opengl_render_anim_initialize(bContext *C, wmOperator *op)
 	oglrender->nfra = PSFRA;
 	scene->r.cfra = PSFRA;
 
-	return 1;
+	return true;
 }
 
 static bool screen_opengl_render_anim_step(bContext *C, wmOperator *op)
diff --git a/source/blender/editors/screen/screendump.c b/source/blender/editors/screen/screendump.c
index e23ac17..a701fc9 100644
--- a/source/blender/editors/screen/screendump.c
+++ b/source/blender/editors/screen/screendump.c
@@ -354,6 +354,10 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update, float
 	
 	if (BKE_imtype_is_movie(rd.im_format.imtype)) {
 		mh = BKE_movie_handle_get(sj->scene->r.im_format.imtype);
+		if (mh == NULL) {
+			printf("Movie format unsupported\n");
+			return;
+		}
 		sj->movie_ctx = mh->context_create();
 		sj->movie_handle = mh;
 
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index 98279da..ad08564 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -3517,6 +3517,11 @@ void RE_BlenderAnim(Render *re, Main *bmain, Scene *scene, Object *camera_overri
 		get_videos_dimensions(re, &rd, &width, &height);
 
 		mh = BKE_movie_handle_get(scene->r.im_format.imtype);
+		if (mh == NULL) {
+			BKE_report(re->reports, RPT_ERROR, "Movie format unsupported");
+			return;
+		}
+
 		re->movie_ctx_arr = MEM_mallocN(sizeof(void *) * totvideos, "Movies' Context");
 
 		for (i = 0; i < totvideos; i++) {




More information about the Bf-blender-cvs mailing list