<html><head></head><body>I don't see what can be separated here.<br><br><div class="gmail_quote">Le 10 février 2020 08:55:40 GMT+02:00, Steve Lhomme <robux4@ycbcr.xyz> a écrit :<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class="k9mail">On 2020-02-09 14:33, Rémi Denis-Courmont wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"><hr>  src/stream_output/sap.c | 37 ++++++++++++++++---------------------<br>  1 file changed, 16 insertions(+), 21 deletions(-)<br><br>diff --git a/src/stream_output/sap.c b/src/stream_output/sap.c<br>index 8e0a29dbec..09c8f9e469 100644<br>--- a/src/stream_output/sap.c<br>+++ b/src/stream_output/sap.c<br>@@ -55,7 +55,7 @@ struct session_descriptor_t<br>   * control flow algorithm */<br>  typedef struct sap_address_t<br>  {<br>-    struct sap_address_t   *next;<br>+    struct vlc_list         node;<br>  <br>      vlc_thread_t            thread;<br>      vlc_mutex_t             lock;<br>@@ -71,7 +71,7 @@ typedef struct sap_address_t<br>      session_descriptor_t   *first;<br>  } sap_address_t;<br>  <br>-static sap_address_t *sap_addrs = NULL;<br>+static struct vlc_list sap_addrs = VLC_LIST_INITIALIZER(&sap_addrs);<br>  static vlc_mutex_t sap_mutex = VLC_STATIC_MUTEX;<br>  <br>  #define SAP_MAX_BUFFER 65534<br>@@ -278,21 +278,18 @@ sout_AnnounceRegisterSDP (vlc_object_t *obj, const char *sdp,<br>  <br>      msg_Dbg (obj, "using SAP address: %s", psz_addr);<br>      vlc_mutex_lock (&sap_mutex);<br>-    for (sap_addr = sap_addrs; sap_addr; sap_addr = sap_addr->next)<br>+    vlc_list_foreach (sap_addr, &sap_addrs, node)<br>          if (!strcmp (psz_addr, sap_addr->group))<br>-            break;<br>+            goto matched;<br>  <br>+    sap_addr = AddressCreate (obj, psz_addr);<br>      if (sap_addr == NULL)<br>      {<br>-        sap_addr = AddressCreate (obj, psz_addr);<br>-        if (sap_addr == NULL)<br>-        {<br>-            vlc_mutex_unlock (&sap_mutex);<br>-            return NULL;<br>-        }<br>-        sap_addr->next = sap_addrs;<br>-        sap_addrs = sap_addr;<br>+        vlc_mutex_unlock(&sap_mutex);<br>+        return NULL;<br>      }<br>+matched:<br>+    vlc_list_append(&sap_addr->node, &sap_addrs);<br>      /* Switch locks.<br>       * NEVER take the global SAP lock when holding a SAP thread lock! */<br>      vlc_mutex_lock (&sap_addr->lock);<br>@@ -372,17 +369,14 @@ out:<br>   */<br>  void sout_AnnounceUnRegister (vlc_object_t *obj, session_descriptor_t *session)<br>  {<br>-    sap_address_t *addr, **paddr;<br>-    session_descriptor_t **psession;<br>+    sap_address_t *addr;<br>+    session_descriptor_t **psession = NULL;<br>  <br>      msg_Dbg (obj, "removing SAP session");<br>      vlc_mutex_lock (&sap_mutex);<br>-    paddr = &sap_addrs;<br>-    for (;;)<br>-    {<br>-        addr = *paddr;<br>-        assert (addr != NULL);<br>  <br>+    vlc_list_foreach (addr, &sap_addrs, node)<br>+    {<br>          psession = &addr->first;<br>          vlc_mutex_lock (&addr->lock);<br>          while (*psession != NULL)<br>@@ -392,15 +386,16 @@ void sout_AnnounceUnRegister (vlc_object_t *obj, session_descriptor_t *session)<br>              psession = &(*psession)->next;<br>          }<br>          vlc_mutex_unlock (&addr->lock);<br>-        paddr = &addr->next;<br>      }<br>  <br>+    vlc_assert_unreachable();<br></blockquote><br>This could be a separate patch. Combined with the psession init.<br><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;">+<br>  found:<br>      *psession = session->next;<br>  <br>      if (addr->first == NULL)<br>          /* Last session for this address -> unlink the address */<br>-        *paddr = addr->next;<br>+        vlc_list_remove(&addr->node);<br>      vlc_mutex_unlock (&sap_mutex);<br>  <br>      if (addr->first == NULL)<br>-- <br>2.25.0<hr>vlc-devel mailing list<br>To unsubscribe or modify your subscription options:<br><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><br><br></blockquote><hr>vlc-devel mailing list<br>To unsubscribe or modify your subscription options:<br><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a></pre></blockquote></div><br>-- <br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.</body></html>