[vlc-devel] [PATCH 1/7] video output: setup interruption context in vout

Steve Lhomme robux4 at ycbcr.xyz
Thu Feb 11 07:39:04 UTC 2021


Just in time for the switch to Gitlab.

On 2021-02-10 12:27, Alexandre Janniaux wrote:
> Hi,
> 
> It seems gandi nacked my patchset at the middle of the batch:
> 5.7.1  Reject for policy reason RULE3_2. See http://postmaster.gandi.net
> 
> Unfortunately, I don't seem to be able to send the rest.
> 
> Regards,
> --
> Alexandre Janniaux
> Videolabs
> 
> On Wed, Feb 10, 2021 at 12:23:17PM +0100, Alexandre Janniaux wrote:
>> Some display are doing IO (eg. texture synchronization, WSI details) and
>> might be waiting within the prepare/display code. Install an
>> interruption context to allow notifying them that we're gonna kill them.
>> ---
>>   src/video_output/video_output.c | 14 ++++++++++++++
>>   1 file changed, 14 insertions(+)
>>
>> diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
>> index d04d3f4d11..d1eaf81242 100644
>> --- a/src/video_output/video_output.c
>> +++ b/src/video_output/video_output.c
>> @@ -49,6 +49,7 @@
>>   #include <vlc_plugin.h>
>>   #include <vlc_codec.h>
>>   #include <vlc_atomic.h>
>> +#include <vlc_interrupt.h>
>>
>>   #include <libvlc.h>
>>   #include "vout_private.h"
>> @@ -162,6 +163,7 @@ typedef struct vout_thread_sys_t
>>       vout_chrono_t   render;           /**< picture render time estimator */
>>       vout_chrono_t   static_filter;
>>
>> +    vlc_interrupt_t *interrupt;
>>       vlc_atomic_rc_t rc;
>>
>>   } vout_thread_sys_t;
>> @@ -1763,6 +1765,8 @@ static void *Thread(void *object)
>>       vlc_tick_t deadline = VLC_TICK_INVALID;
>>       bool wait = false;
>>
>> +    vlc_interrupt_set(sys->interrupt);
>> +
>>       for (;;) {
>>           if (wait)
>>           {
>> @@ -1848,9 +1852,11 @@ void vout_StopDisplay(vout_thread_t *vout)
>>       vout_thread_sys_t *sys = VOUT_THREAD_TO_SYS(vout);
>>
>>       atomic_store(&sys->control_is_terminated, true);
>> +    vlc_interrupt_kill(sys->interrupt);
>>       // wake up so it goes back to the loop that will detect the terminated state
>>       vout_control_Wake(&sys->control);
>>       vlc_join(sys->thread, NULL);
>> +    vlc_interrupt_destroy(sys->interrupt);
>>
>>       vout_ReleaseDisplay(sys);
>>   }
>> @@ -2147,6 +2153,14 @@ int vout_Request(const vout_configuration_t *cfg, vlc_video_context *vctx, input
>>
>>       if (sys->display != NULL)
>>           vout_StopDisplay(cfg->vout);
>> +    sys->interrupt = vlc_interrupt_create();
>> +    if (sys->interrupt == NULL)
>> +    {
>> +        video_format_Clean(&original);
>> +        vout_DisableWindow(vout);
>> +        return -1;
>> +    }
>> +
>>
>>       vout_ReinitInterlacingSupport(cfg->vout, &sys->private);
>>
>> --
>> 2.30.1
>>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
> 


More information about the vlc-devel mailing list