vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sun Feb 24 15:46:17 2019 +0200| [f0982a412d4042794b93b237af2c07aa52cc2ac1] | committer: Rémi Denis-Courmont
vout: do not destroy vout on failed start > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f0982a412d4042794b93b237af2c07aa52cc2ac1 --- src/audio_output/filters.c | 6 +++++- src/input/resource.c | 3 +++ src/video_output/video_output.c | 9 ++------- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/audio_output/filters.c b/src/audio_output/filters.c index d86a32a81d..0dc1fe8864 100644 --- a/src/audio_output/filters.c +++ b/src/audio_output/filters.c @@ -393,7 +393,11 @@ vout_thread_t *aout_filter_GetVout(filter_t *filter, const video_format_t *fmt) video_format_AdjustColorSpace(&adj_fmt); - return vout_Request(&cfg, NULL); + if (vout_Request(&cfg, NULL) == NULL) { + vout_Close(vout); + vout = NULL; + } + return vout; } static int AppendFilter(vlc_object_t *obj, const char *type, const char *name, diff --git a/src/input/resource.c b/src/input/resource.c index 9db0ce70d3..0127a853d2 100644 --- a/src/input/resource.c +++ b/src/input/resource.c @@ -418,6 +418,9 @@ vout_thread_t *input_resource_GetVout(input_resource_t *p_resource, .action = VLC_INPUT_EVENT_VOUT_ADDED, .vout = vout, }); + } else { + vout_Close(vout); + vout = NULL; } out: vlc_mutex_unlock( &p_resource->lock ); diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c index 681beb4114..68553773e1 100644 --- a/src/video_output/video_output.c +++ b/src/video_output/video_output.c @@ -1739,11 +1739,8 @@ vout_thread_t *vout_Request(const vout_configuration_t *cfg, assert(vout != NULL); assert(cfg->fmt != NULL); - if (!VoutCheckFormat(cfg->fmt)) { - if (vout != NULL) - vout_Close(vout); + if (!VoutCheckFormat(cfg->fmt)) return NULL; - } video_format_t original; VoutFixFormat(&original, cfg->fmt); @@ -1802,9 +1799,7 @@ vout_thread_t *vout_Request(const vout_configuration_t *cfg, || vlc_clone(&sys->thread, Thread, vout, VLC_THREAD_PRIORITY_OUTPUT)) { error: msg_Err(vout, "video output creation failed"); - vout_display_window_Delete(sys->display_cfg.window); - spu_Destroy(sys->spu); - vlc_object_release(vout); + video_format_Clean(&sys->original); return NULL; } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
