[vlc-devel] [vlc-commits] stream_filter/httplive.c: signal download thread on successfull index reload (live streams)

Jean-Paul Saman jpsaman at gmail.com
Mon Oct 10 14:56:06 CEST 2011


2011/10/10 Rémi Denis-Courmont <remi at remlab.net>:
> On Mon, 10 Oct 2011 14:30:01 +0200 (CEST), git at videolan.org (Jean-Paul
> Saman) wrote:
>> vlc | branch: master | Jean-Paul Saman <jean-paul.saman at m2x.nl> | Wed
> Oct
>> 5 15:48:43 2011 +0200| [176f95145a9abe736170f8e02ef94720dbf6d4d6] |
>> committer: Jean-Paul Saman
>>
>> stream_filter/httplive.c: signal download thread on successfull index
>> reload (live streams)
>>
>> Make sure the download thread will continue when an new index file for
>> this stream has been successfully loaded.
>>
>>>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=176f95145a9abe736170f8e02ef94720dbf6d4d6
>> ---
>>
>>  modules/stream_filter/httplive.c |   17 ++++++++++++++---
>>  1 files changed, 14 insertions(+), 3 deletions(-)
>>
>> diff --git a/modules/stream_filter/httplive.c
>> b/modules/stream_filter/httplive.c
>> index e809a7b..a409c40 100644
>> --- a/modules/stream_filter/httplive.c
>> +++ b/modules/stream_filter/httplive.c
>> @@ -1077,9 +1077,20 @@ static int hls_ReloadPlaylist(stream_t *s)
>>              msg_Info(s, "new HLS stream appended (id=%d,
>>              bandwidth=%"PRIu64")",
>>                       hls_new->id, hls_new->bandwidth);
>>          }
>> -        else if (hls_UpdatePlaylist(s, hls_new, &hls_old) !=
> VLC_SUCCESS)
>> -            msg_Info(s, "failed updating HLS stream (id=%d,
>> bandwidth=%"PRIu64")",
>> -                     hls_new->id, hls_new->bandwidth);
>> +        else
>> +        {
>> +            if ((hls_UpdatePlaylist(s, hls_new, &hls_old) ==
> VLC_SUCCESS)
>> &&
>> +                    (s->p_sys->download.stream == n))
>> +            {
>> +                /* wake up download thread */
>> +                vlc_mutex_lock(&s->p_sys->download.lock_wait);
>> +                vlc_cond_signal(&s->p_sys->download.wait);
>> +                vlc_mutex_unlock(&s->p_sys->download.lock_wait);
>
> This code makes no sense under the VLC (i.e. POSIX) model of condition
> variables.
>
> There is thus 99.999% probability that there is a race condition somewhere
> nearby, though I don't have time to investigate.

Hmm, I'll investigate.

>
> --
> Rémi Denis-Courmont
> http://www.remlab.net/
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> http://mailman.videolan.org/listinfo/vlc-devel
>



More information about the vlc-devel mailing list