[vlc-devel] [PATCH] too long timeouts in win32 vlc_poll
funman at videolan.org
Sun Feb 3 15:45:45 CET 2013
Le 03/02/2013 14:18, Mario Speiß a écrit :
> On 03.02.2013 13:09, Rafaël Carré wrote:
>> Le 03/02/2013 12:01, Mario Speiß a écrit :
>>> When vlc_poll is called with timeout of i.e. 5000ms it may happen that the
>>> waiting time might be as long as 2500s ! Probably poll should be called with
>>> the 50ms timeout as many times until the original provided timeout has been
>>> include/vlc_threads.h | 2 +-
>>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>> diff --git a/include/vlc_threads.h b/include/vlc_threads.h
>>> index 7c6a4ca..337ded4 100644
>>> --- a/include/vlc_threads.h
>>> +++ b/include/vlc_threads.h
>>> @@ -392,7 +392,7 @@ static inline int vlc_poll (struct pollfd *fds, unsigned nfds, int timeout)
>>> while (timeout> 50)
>>> - int val = poll (fds, nfds, timeout);
>>> + int val = poll (fds, nfds, 50);
>>> if (val != 0)
>>> return val;
>>> timeout -= 50;
>> I think the problem is that if timeout is very long, the thread can not
>> be cancelled before that full timeout has been spent in poll()
> I experienced that issue when trying to connect to a non existing mms
> stream from tcp.c with a timeout of 5000 (ms). With the original code
> poll would be called 5000:50=100 times with timeouts of 5s, 4.95s, 4.9s
> and so on.
> That really seems wrong to me. With this patch the timeout occurs after
> 5 seconds.
OK, sorry I think I read the patch in reverse.
It looks correct of course.
Courmisch, do you agree?
More information about the vlc-devel