[vlc-devel] [PATCH 5/5] sap: simplify not using cancellation

Steve Lhomme robux4 at ycbcr.xyz
Mon Feb 10 08:46:54 CET 2020


On 2020-02-10 8:22, Rémi Denis-Courmont wrote:
> Hi,
> 
> Before it would wait to be cancelled when there are no sessions. Now it 
> exits on its own.

Ah, I just realized that it's one thread per session. I thought it was 
one for all.

So if you register, unregister, register the same session it was already 
closing the first thread and create a new one.



> Le 10 février 2020 08:54:21 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 | 22 ++++++++--------------
>         1 file changed, 8 insertions(+), 14 deletions(-)
> 
>         diff --git a/src/stream_output/sap.c b/src/stream_output/sap.c
>         index eb85ab7297..481f3e5f20 100644
>         --- a/src/stream_output/sap.c
>         +++ b/src/stream_output/sap.c
>         @@ -27,7 +27,6 @@
> 
>         #include <vlc_common.h>
> 
>         -#include <stdnoreturn.h>
>         #include <stdlib.h> /* free() */
>         #include <stdio.h> /* sprintf() */
>         #include <string.h>
>         @@ -81,7 +80,7 @@ static vlc_mutex_t sap_mutex = VLC_STATIC_MUTEX;
>         #define MIN_INTERVAL 2
>         #define MAX_INTERVAL 300
> 
>         -noreturn static void *RunThread (void *);
>         +static void *RunThread (void *);
> 
>         static sap_address_t *AddressCreate (vlc_object_t *obj, const
>         char *group)
>         {
>         @@ -120,14 +119,13 @@ static void AddressDestroy (sap_address_t
>         *addr)
>         * \param p_this the SAP Handler object
>         * \return nothing
>         */
>         -noreturn static void *RunThread (void *self)
>         +static void *RunThread (void *self)
>         {
>         sap_address_t *addr = self;
> 
>         vlc_mutex_lock(&sap_mutex);
>         - mutex_cleanup_push(&sap_mutex);
> 
>         - for (;;)
>         + while (!vlc_list_is_empty(&addr->sessions))
> 
> 
>     So when the number of sessions goes down to zero, it exits. Before it
>     would wait, in case a new session would come. Is this intended ?
> 
>         {
>         session_descriptor_t *p_session;
>         vlc_tick_t deadline = vlc_tick_now();
>         @@ -144,8 +142,8 @@ noreturn static void *RunThread (void *self)
>         }
>         }
> 
>         - vlc_cleanup_pop ();
>         - vlc_assert_unreachable ();
>         + vlc_mutex_unlock(&sap_mutex);
>         + return NULL;
>         }
> 
>         #undef sout_AnnounceRegisterSDP
>         @@ -372,17 +370,13 @@ void sout_AnnounceUnRegister (vlc_object_t
>         *obj, session_descriptor_t *session)
>         if (vlc_list_is_empty(&addr->sessions))
>         /* Last session for this address -> unlink the address */
>         vlc_list_remove(&addr->node);
>         - else
>         - {
>         - addr->session_count--;
>         - vlc_cond_signal (&addr->wait);
>         - }
> 
>         - vlc_mutex_unlock (&sap_mutex);
>         + addr->session_count--;
>         + vlc_cond_signal(&addr->wait);
>         + vlc_mutex_unlock(&sap_mutex);
> 
>         if (vlc_list_is_empty(&addr->sessions))
>         {
>         - vlc_cancel(addr->thread);
>         vlc_join(addr->thread, NULL);
>         AddressDestroy(addr);
>         }
>         -- 
>         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é.
> 
> _______________________________________________
> 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