From 1153717cbfca7f913577a1dfb6226991190e1257 Mon Sep 17 00:00:00 2001 From: Pierre d'Herbemont Date: Sat, 18 Aug 2007 03:44:13 +0000 Subject: [PATCH] playlist/services_discovery.c: Use a stop method to end the service. --- include/vlc_playlist.h | 1 + src/playlist/services_discovery.c | 21 +++++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/include/vlc_playlist.h b/include/vlc_playlist.h index 3a7f95d565..20bce26e89 100644 --- a/include/vlc_playlist.h +++ b/include/vlc_playlist.h @@ -428,6 +428,7 @@ VLC_EXPORT( playlist_item_t *, playlist_GetLastLeaf, ( playlist_t *p_playlist, p VLC_EXPORT( services_discovery_t *, services_discovery_Create, ( vlc_object_t * p_super, const char * psz_service_name ) ); VLC_EXPORT( void, services_discovery_Destroy, ( services_discovery_t * p_this ) ); VLC_EXPORT( int, services_discovery_Start, ( services_discovery_t * p_this ) ); +VLC_EXPORT( void, services_discovery_Stop, ( services_discovery_t * p_this ) ); /* Read info from discovery object */ VLC_EXPORT( char *, services_discovery_GetLocalizedName, ( services_discovery_t * p_this ) ); diff --git a/src/playlist/services_discovery.c b/src/playlist/services_discovery.c index bc32a18322..d66adab8f8 100644 --- a/src/playlist/services_discovery.c +++ b/src/playlist/services_discovery.c @@ -72,13 +72,9 @@ services_discovery_Create ( vlc_object_t * p_super, const char * psz_module_name ***********************************************************************/ void services_discovery_Destroy ( services_discovery_t * p_sd ) { - vlc_object_kill( p_sd ); - if( p_sd->pf_run ) vlc_thread_join( p_sd ); + vlc_event_manager_fini( &p_sd->event_manager ); free( p_sd->psz_module ); - module_Unneed( p_sd, p_sd->p_module ); - - vlc_event_manager_fini( &p_sd->event_manager ); free( p_sd->psz_localized_name ); vlc_object_destroy( p_sd ); @@ -100,6 +96,17 @@ int services_discovery_Start ( services_discovery_t * p_sd ) return VLC_SUCCESS; } +/*********************************************************************** + * Stop + ***********************************************************************/ +void services_discovery_Stop ( services_discovery_t * p_sd ) +{ + vlc_object_kill( p_sd ); + if( p_sd->pf_run ) vlc_thread_join( p_sd ); + + module_Unneed( p_sd, p_sd->p_module ); +} + /*********************************************************************** * GetLocalizedName ***********************************************************************/ @@ -316,7 +323,7 @@ int playlist_ServicesDiscoveryRemove( playlist_t * p_playlist, if( p_asd && p_asd->p_sd ) { - services_discovery_Destroy( p_asd->p_sd ); + services_discovery_Stop( p_asd->p_sd ); vlc_event_detach( services_discovery_EventManager( p_asd->p_sd ), vlc_ServicesDiscoveryItemAdded, @@ -348,6 +355,8 @@ int playlist_ServicesDiscoveryRemove( playlist_t * p_playlist, } PL_UNLOCK; + services_discovery_Destroy( p_asd->p_sd ); + free( p_asd ); } else -- 2.39.2