vlc_mutex_lock(&sys->filter_chain_lock);
if (chain_update) {
- filter_chain_Reset(sys->filter_chain, NULL, NULL);
+ if (*chain_update) {
+ filter_chain_Reset(sys->filter_chain, NULL, NULL);
- filter_chain_AppendFromString(spu->p->filter_chain, chain_update);
+ filter_chain_AppendFromString(spu->p->filter_chain, chain_update);
+ }
+ else if (filter_chain_GetLength(spu->p->filter_chain) > 0)
+ filter_chain_Reset(sys->filter_chain, NULL, NULL);
/* "sub-source" was formerly "sub-filter", so now the "sub-filter"
configuration may contain sub-filters or sub-sources configurations.
}
vlc_mutex_unlock(&sys->filter_chain_lock);
-
if (is_left_empty) {
- /* try to use the configuration as a sub-source configuration */
-
- vlc_mutex_lock(&sys->lock);
- if (!sys->source_chain_update || !*sys->source_chain_update) {
- free(sys->source_chain_update);
- sys->source_chain_update = chain_update;
- chain_update = NULL;
+ /* try to use the configuration as a sub-source configuration,
+ but only if there is no 'source_chain_update' value and
+ if only if 'chain_update' has a value */
+ if (chain_update && *chain_update) {
+ vlc_mutex_lock(&sys->lock);
+ if (!sys->source_chain_update && !*sys->source_chain_update) {
+ free(sys->source_chain_update);
+ sys->source_chain_update = chain_update;
+ chain_update = NULL;
+ }
+ vlc_mutex_unlock(&sys->lock);
}
- vlc_mutex_unlock(&sys->lock);
}
free(chain_update);
/* Run filter chain on the new subpicture */
+ vlc_mutex_lock(&sys->filter_chain_lock);
subpic = filter_chain_SubFilter(spu->p->filter_chain, subpic);
+ vlc_mutex_unlock(&sys->filter_chain_lock);
if (!subpic)
return;
vlc_mutex_lock(&sys->source_chain_lock);
if (chain_update) {
- filter_chain_Reset(sys->source_chain, NULL, NULL);
+ if (*chain_update) {
+ filter_chain_Reset(sys->source_chain, NULL, NULL);
- filter_chain_AppendFromString(spu->p->source_chain, chain_update);
+ filter_chain_AppendFromString(spu->p->source_chain, chain_update);
+ }
+ else if (filter_chain_GetLength(spu->p->source_chain) > 0)
+ filter_chain_Reset(sys->source_chain, NULL, NULL);
free(chain_update);
}