[vlc-devel] [PATCH 1/5] sap: use vlc_list for SAP addresses

Rémi Denis-Courmont remi at remlab.net
Mon Feb 10 08:22:58 CET 2020


I don't see what can be separated here.

Le 10 février 2020 08:55:40 GMT+02:00, Steve Lhomme <robux4 at ycbcr.xyz> a écrit :
>On 2020-02-09 14:33, Rémi Denis-Courmont wrote:
>> ---
>>   src/stream_output/sap.c | 37 ++++++++++++++++---------------------
>>   1 file changed, 16 insertions(+), 21 deletions(-)
>> 
>> diff --git a/src/stream_output/sap.c b/src/stream_output/sap.c
>> index 8e0a29dbec..09c8f9e469 100644
>> --- a/src/stream_output/sap.c
>> +++ b/src/stream_output/sap.c
>> @@ -55,7 +55,7 @@ struct session_descriptor_t
>>    * control flow algorithm */
>>   typedef struct sap_address_t
>>   {
>> -    struct sap_address_t   *next;
>> +    struct vlc_list         node;
>>   
>>       vlc_thread_t            thread;
>>       vlc_mutex_t             lock;
>> @@ -71,7 +71,7 @@ typedef struct sap_address_t
>>       session_descriptor_t   *first;
>>   } sap_address_t;
>>   
>> -static sap_address_t *sap_addrs = NULL;
>> +static struct vlc_list sap_addrs = VLC_LIST_INITIALIZER(&sap_addrs);
>>   static vlc_mutex_t sap_mutex = VLC_STATIC_MUTEX;
>>   
>>   #define SAP_MAX_BUFFER 65534
>> @@ -278,21 +278,18 @@ sout_AnnounceRegisterSDP (vlc_object_t *obj,
>const char *sdp,
>>   
>>       msg_Dbg (obj, "using SAP address: %s", psz_addr);
>>       vlc_mutex_lock (&sap_mutex);
>> -    for (sap_addr = sap_addrs; sap_addr; sap_addr = sap_addr->next)
>> +    vlc_list_foreach (sap_addr, &sap_addrs, node)
>>           if (!strcmp (psz_addr, sap_addr->group))
>> -            break;
>> +            goto matched;
>>   
>> +    sap_addr = AddressCreate (obj, psz_addr);
>>       if (sap_addr == NULL)
>>       {
>> -        sap_addr = AddressCreate (obj, psz_addr);
>> -        if (sap_addr == NULL)
>> -        {
>> -            vlc_mutex_unlock (&sap_mutex);
>> -            return NULL;
>> -        }
>> -        sap_addr->next = sap_addrs;
>> -        sap_addrs = sap_addr;
>> +        vlc_mutex_unlock(&sap_mutex);
>> +        return NULL;
>>       }
>> +matched:
>> +    vlc_list_append(&sap_addr->node, &sap_addrs);
>>       /* Switch locks.
>>        * NEVER take the global SAP lock when holding a SAP thread
>lock! */
>>       vlc_mutex_lock (&sap_addr->lock);
>> @@ -372,17 +369,14 @@ out:
>>    */
>>   void sout_AnnounceUnRegister (vlc_object_t *obj,
>session_descriptor_t *session)
>>   {
>> -    sap_address_t *addr, **paddr;
>> -    session_descriptor_t **psession;
>> +    sap_address_t *addr;
>> +    session_descriptor_t **psession = NULL;
>>   
>>       msg_Dbg (obj, "removing SAP session");
>>       vlc_mutex_lock (&sap_mutex);
>> -    paddr = &sap_addrs;
>> -    for (;;)
>> -    {
>> -        addr = *paddr;
>> -        assert (addr != NULL);
>>   
>> +    vlc_list_foreach (addr, &sap_addrs, node)
>> +    {
>>           psession = &addr->first;
>>           vlc_mutex_lock (&addr->lock);
>>           while (*psession != NULL)
>> @@ -392,15 +386,16 @@ void sout_AnnounceUnRegister (vlc_object_t
>*obj, session_descriptor_t *session)
>>               psession = &(*psession)->next;
>>           }
>>           vlc_mutex_unlock (&addr->lock);
>> -        paddr = &addr->next;
>>       }
>>   
>> +    vlc_assert_unreachable();
>
>This could be a separate patch. Combined with the psession init.
>
>> +
>>   found:
>>       *psession = session->next;
>>   
>>       if (addr->first == NULL)
>>           /* Last session for this address -> unlink the address */
>> -        *paddr = addr->next;
>> +        vlc_list_remove(&addr->node);
>>       vlc_mutex_unlock (&sap_mutex);
>>   
>>       if (addr->first == NULL)
>> -- 
>> 2.25.0
>> 
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
>> 
>_______________________________________________
>vlc-devel mailing list
>To unsubscribe or modify your subscription options:
>https://mailman.videolan.org/listinfo/vlc-devel

-- 
Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20200210/fc7781ce/attachment.html>


More information about the vlc-devel mailing list