From 1a59b63e1c450e034d9aad800a7707d01c86ce6d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 23 Sep 2015 02:40:08 +1000 Subject: Show error when unsupported movie format used Was silently failing. --- source/blender/blenkernel/intern/writeavi.c | 10 +++++++--- source/blender/editors/render/render_opengl.c | 15 +++++++++++---- source/blender/editors/screen/screendump.c | 4 ++++ source/blender/render/intern/source/pipeline.c | 5 +++++ 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/source/blender/blenkernel/intern/writeavi.c b/source/blender/blenkernel/intern/writeavi.c index cec455e01b9..82e4405225a 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 c718dfa9229..fe4022709de 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 e23ac1710e3..a701fc9ccb7 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 98279da13bd..ad0856497c3 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++) { -- cgit v1.2.3