[vlc-devel] [PATCH 02/13] resource: allow to create a vout without config
Thomas Guillem
thomas at gllm.fr
Mon Apr 15 15:50:47 CEST 2019
---
src/input/resource.c | 25 ++++++++++++++++---------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/src/input/resource.c b/src/input/resource.c
index 0812db6fe6..01a2889655 100644
--- a/src/input/resource.c
+++ b/src/input/resource.c
@@ -372,21 +372,16 @@ void input_resource_SetInput( input_resource_t *p_resource, input_thread_t *p_in
vout_thread_t *input_resource_GetVout(input_resource_t *p_resource,
const vout_configuration_t *cfg)
{
- vout_configuration_t cfg_buf;
vout_thread_t *vout;
- assert(cfg != NULL);
- assert(cfg->fmt != NULL);
vlc_mutex_lock( &p_resource->lock );
- if (cfg->vout == NULL) {
- cfg_buf = *cfg;
- cfg_buf.vout = p_resource->p_vout_free;
+ if (cfg == NULL || cfg->vout == NULL) {
+ vout = p_resource->p_vout_free;
p_resource->p_vout_free = NULL;
- cfg = &cfg_buf;
- if (cfg_buf.vout == NULL) {
- cfg_buf.vout = vout = vout_Create(p_resource->p_parent);
+ if (vout == NULL) {
+ vout = vout_Create(p_resource->p_parent);
if (vout == NULL)
goto out;
} else
@@ -397,8 +392,20 @@ vout_thread_t *input_resource_GetVout(input_resource_t *p_resource,
vlc_mutex_lock(&p_resource->lock_hold);
TAB_REMOVE(p_resource->i_vout, p_resource->pp_vout, cfg->vout);
vlc_mutex_unlock(&p_resource->lock_hold);
+ vout = cfg->vout;
+ }
+
+ if (!cfg) {
+ vlc_mutex_unlock(&p_resource->lock);
+ return vout;
}
+ vout_configuration_t cfg_buf = *cfg;
+ cfg_buf.vout = vout;
+ cfg = &cfg_buf;
+
+ assert(cfg->fmt != NULL);
+
if (vout_Request(cfg, p_resource->p_input)) {
vlc_mutex_unlock(&p_resource->lock);
input_resource_PutVout(p_resource, cfg->vout);
--
2.20.1
More information about the vlc-devel
mailing list