X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=modules%2Faccess_output%2Fbonjour.c;h=3dfb9b888a136860df1342217a7629f9e7dfca92;hb=c12acbd7d48431d7b5029d765e69e87378aca7a2;hp=908673e6f18c2638f56275fd5dc60a47d39795ee;hpb=a78e273ec53ff8a6c3993f3deda0b893f8dd709a;p=vlc diff --git a/modules/access_output/bonjour.c b/modules/access_output/bonjour.c index 908673e6f1..3dfb9b888a 100644 --- a/modules/access_output/bonjour.c +++ b/modules/access_output/bonjour.c @@ -29,17 +29,15 @@ # include "config.h" #endif -#include +#include #include "bonjour.h" #ifdef HAVE_AVAHI_CLIENT #include #include -#ifdef HAVE_AVAHI_06 -# include -# include -#endif +#include +#include #include #include #include @@ -81,6 +79,7 @@ static void entry_group_callback( AvahiEntryGroup *g, AvahiEntryGroupState state, void *userdata ) { + (void)g; bonjour_t *p_sys = (bonjour_t *)userdata; if( state == AVAHI_ENTRY_GROUP_ESTABLISHED ) @@ -121,11 +120,7 @@ static int create_service( bonjour_t *p_sys ) } error = avahi_entry_group_add_service( p_sys->group, AVAHI_IF_UNSPEC, -#ifdef HAVE_AVAHI_06 AVAHI_PROTO_UNSPEC, 0, p_sys->psz_name, -#else - AVAHI_PROTO_UNSPEC, p_sys->psz_name, -#endif p_sys->psz_stype, NULL, NULL, p_sys->i_port, p_sys->psz_txt, NULL ); @@ -166,12 +161,8 @@ static void client_callback( AvahiClient *c, if( p_sys->group != NULL ) avahi_entry_group_reset( p_sys->group ); } -#ifdef HAVE_AVAHI_06 else if( state == AVAHI_CLIENT_FAILURE && (avahi_client_errno(c) == AVAHI_ERR_DISCONNECTED) ) -#else - else if( state == AVAHI_CLIENT_DISCONNECTED ) -#endif { msg_Err( p_sys->p_log, "avahi client disconnected" ); avahi_simple_poll_quit( p_sys->simple_poll ); @@ -181,13 +172,17 @@ static void client_callback( AvahiClient *c, /***************************************************************************** * poll_iterate_thread *****************************************************************************/ -static void poll_iterate_thread( poll_thread_t *p_pt ) +static void* poll_iterate_thread( vlc_object_t *p_this ) { - vlc_thread_ready( p_pt ); + poll_thread_t *p_pt = (poll_thread_t*)p_this; + int canc = vlc_savecancel (); - while( !p_pt->b_die ) + while( vlc_object_alive (p_pt) ) if( avahi_simple_poll_iterate( p_pt->simple_poll, 100 ) != 0 ) break; + + vlc_restorecancel (canc); + return NULL; } /***************************************************************************** @@ -197,36 +192,23 @@ void *bonjour_start_service( vlc_object_t *p_log, const char *psz_stype, const char *psz_name, int i_port, char *psz_txt ) { int err; - bonjour_t *p_sys; - p_sys = (bonjour_t *)malloc( sizeof(*p_sys) ); + bonjour_t* p_sys = calloc( 1, sizeof(*p_sys) ); if( p_sys == NULL ) - { - msg_Err( p_log, "out of memory" ); return NULL; - } - - memset( p_sys, 0, sizeof(*p_sys) ); p_sys->p_log = p_log; - p_sys->i_port = i_port; p_sys->psz_name = avahi_strdup( psz_name ); p_sys->psz_stype = avahi_strdup( psz_stype ); if( p_sys->psz_name == NULL || p_sys->psz_stype == NULL ) - { - msg_Err( p_sys->p_log, "out of memory" ); goto error; - } if( psz_txt != NULL ) { p_sys->psz_txt = avahi_strdup( psz_txt ); if( p_sys->psz_txt == NULL ) - { - msg_Err( p_sys->p_log, "out of memory" ); goto error; - } } p_sys->simple_poll = avahi_simple_poll_new(); @@ -237,9 +219,7 @@ void *bonjour_start_service( vlc_object_t *p_log, const char *psz_stype, } p_sys->client = avahi_client_new( avahi_simple_poll_get(p_sys->simple_poll), -#ifdef HAVE_AVAHI_06 0, -#endif client_callback, p_sys, &err ); if( p_sys->client == NULL ) { @@ -251,15 +231,12 @@ void *bonjour_start_service( vlc_object_t *p_log, const char *psz_stype, p_sys->poll_thread = vlc_object_create( p_sys->p_log, sizeof(poll_thread_t) ); if( p_sys->poll_thread == NULL ) - { - msg_Err( p_sys->p_log, "out of memory" ); goto error; - } p_sys->poll_thread->simple_poll = p_sys->simple_poll; if( vlc_thread_create( p_sys->poll_thread, "Avahi Poll Iterate Thread", poll_iterate_thread, - VLC_THREAD_PRIORITY_HIGHEST, VLC_FALSE ) ) + VLC_THREAD_PRIORITY_HIGHEST ) ) { msg_Err( p_sys->p_log, "failed to create poll iterate thread" ); goto error; @@ -281,7 +258,7 @@ error: if( p_sys->psz_txt != NULL ) avahi_free( p_sys->psz_txt ); - free( (void *)p_sys ); + free( p_sys ); return NULL; }