[vlc-devel] [PATCH] Core: Disable vout recycling for the visualization (fixes #9270) This avoids the vout opened for by the "visual" module to stay opened after having started an OpenGL based visualization.

Adrien Maglo magsoft at videolan.org
Mon Sep 2 22:46:26 CEST 2013

Le 02/09/2013 18:17, Rémi Denis-Courmont a écrit :
> Le dimanche 1 septembre 2013 13:48:49 Adrien Maglo a écrit :
>> ---
>>   src/audio_output/filters.c | 4 +++-
>>   1 file changed, 3 insertions(+), 1 deletion(-)
>> diff --git a/src/audio_output/filters.c b/src/audio_output/filters.c
>> index 796da1f..e20d275 100644
>> --- a/src/audio_output/filters.c
>> +++ b/src/audio_output/filters.c
>> @@ -337,7 +337,9 @@ vout_thread_t *aout_filter_RequestVout (filter_t
>> *filter, vout_thread_t *vout, * to aout_request_vout_t inside filter_t
>> (i.e. a level of indirection). */ const aout_request_vout_t *req = (void
>> *)filter->p_owner;
>>       char *visual = var_InheritString (filter->p_parent, "audio-visual");
>> -    bool recycle = (visual != NULL) && strcasecmp(visual, "none");
>> +    /* NOTE: Disable recycling to allways close the filter vout because
>> OpenGL
>> +     * visualizations do not use this function to ask for a
>> context. */
>> +    bool recycle = false;
> Not all visualizations use OpenGL. If some are broken, fix those.

The problem is not in the visualizations. AFAIK, they use the single API 
they have to ask for an OpenGL context. This is a problem in the core.

The non-OpenGL visualizations uses aout_filter_RequestVout() to get a 
vout while the OpenGL visualizations uses vout_NewDisplay() because they 
need precise that the vout must be an OpenGL one.

The problem is that vout_NewDisplay() don't clean free remaining vout 
before creating an OpenGL context. That causes the bug described in the 
ticket #9270. Besides, aout_filter_RequestVout() can't provide 
specifically an OpenGL context.

The cleanest solution would be to extend aout_filter_RequestVout() to 
allow to obtain specifically an OpenGL vout and possibly recycle them.

I sent this patch because even if it is far from being perfect, it fixes 
the issue without too much impacting the user. IMHO, it may be 
interesting if we can't do better for 2.1.


More information about the vlc-devel mailing list