[vlc-devel] [PATCH 08/21] video_output: use INT64_MAX for the invalid control pop deadline

Steve Lhomme robux4 at ycbcr.xyz
Wed Sep 16 08:04:36 CEST 2020


On 2020-09-15 18:05, Rémi Denis-Courmont wrote:
> Le tiistaina 15. syyskuuta 2020, 15.36.13 EEST Steve Lhomme a écrit :
>> This simplifies setting the value.
>>
>> When reading a control with an invalid deadline, we don't wait for a command
>> to arrive.
> 
> I'm not sure relying implicity on invalid deadline being a large value really
> improves readability, even if it strictly speaking simplifies the code.

That's how a lot of code using vlc_tick_t do it and how I got the idea. 
Using INT64_MAX instead of a define may make it more obvious. Maybe the 
mnemonic could be better.

>> ---
>>   src/video_output/control.c      |  2 +-
>>   src/video_output/control.h      |  2 ++
>>   src/video_output/video_output.c | 14 ++++++--------
>>   3 files changed, 9 insertions(+), 9 deletions(-)
>>
>> diff --git a/src/video_output/control.c b/src/video_output/control.c
>> index 3b7fabb07e9..190792a472a 100644
>> --- a/src/video_output/control.c
>> +++ b/src/video_output/control.c
>> @@ -114,7 +114,7 @@ int vout_control_Pop(vout_control_t *ctrl,
>> vout_control_cmd_t *cmd,
>>
>>       if (ctrl->cmd.i_size <= 0) {
>>           /* Spurious wakeups are perfectly fine */
>> -        if (deadline != VLC_TICK_INVALID && ctrl->can_sleep) {
>> +        if (deadline != INVALID_DEADLINE && ctrl->can_sleep) {
>>               ctrl->is_waiting = true;
>>               vlc_cond_signal(&ctrl->wait_available);
>>               vlc_cond_timedwait(&ctrl->wait_request, &ctrl->lock, deadline);
>> diff --git a/src/video_output/control.h b/src/video_output/control.h index
>> 5d84db34d13..78a41502c5d 100644
>> --- a/src/video_output/control.h
>> +++ b/src/video_output/control.h
>> @@ -69,6 +69,8 @@ void vout_control_Hold(vout_control_t *);
>>   void vout_control_Release(vout_control_t *);
>>
>>   /* control inside of the vout thread */
>> +#define INVALID_DEADLINE   ((vlc_tick_t) INT64_MAX)
> 
> Useless cast.
> 
>> +
>>   int vout_control_Pop(vout_control_t *, vout_control_cmd_t *, vlc_tick_t
>> deadline); void vout_control_Dead(vout_control_t *);
>>
>> diff --git a/src/video_output/video_output.c
>> b/src/video_output/video_output.c index 74f0435628a..6e78e7f71d3 100644
>> --- a/src/video_output/video_output.c
>> +++ b/src/video_output/video_output.c
>> @@ -1486,7 +1486,7 @@ static int ThreadDisplayPicture(vout_thread_sys_t
>> *vout, vlc_tick_t *deadline) vlc_mutex_unlock(&sys->filter.lock);
>>
>>       if (deadline)
>> -        *deadline = VLC_TICK_INVALID;
>> +        *deadline = INVALID_DEADLINE;
>>
>>       if (first)
>>           if (ThreadDisplayPreparePicture(vout, true, frame_by_frame,
>> &paused)) /* FIXME not sure it is ok */ @@ -1537,10 +1537,8 @@ static int
>> ThreadDisplayPicture(vout_thread_sys_t *vout, vlc_tick_t *deadline) // the
>> next frame is not in the future, skip the current one display_next_frame =
>> true;
>>
>> -            if (deadline) {
>> -                if (*deadline == VLC_TICK_INVALID || date_next < *deadline)
>> -                    *deadline = date_next;
>> -            }
>> +            if (deadline)
>> +                *deadline = __MIN(*deadline, date_next);
>>           }
>>       }
>>
>> @@ -1883,7 +1881,7 @@ static void *Thread(void *object)
>>       vout_thread_sys_t *vout = object;
>>       vout_thread_sys_t *sys = vout;
>>
>> -    vlc_tick_t deadline = VLC_TICK_INVALID;
>> +    vlc_tick_t deadline = INVALID_DEADLINE;
>>       bool wait = false;
>>
>>       for (;;) {
>> @@ -1892,9 +1890,9 @@ static void *Thread(void *object)
>>           if (wait)
>>           {
>>               const vlc_tick_t max_deadline = vlc_tick_now() +
>> VLC_TICK_FROM_MS(100); -            deadline = deadline == VLC_TICK_INVALID
>> ? max_deadline : __MIN(deadline, max_deadline); +            deadline =
>> __MIN(deadline, max_deadline);
>>           } else {
>> -            deadline = VLC_TICK_INVALID;
>> +            deadline = INVALID_DEADLINE;
>>           }
>>
>>           while (!vout_control_Pop(&sys->control, &cmd, deadline)) {
> 
> 
> -- 
> レミ・デニ-クールモン
> http://www.remlab.net/
> 
> 
> 
> _______________________________________________
> 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