Commit 4c905528 authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

libvlc: In order not to be confused by a vlm created elsewhere, use a libvlc...

libvlc: In order not to be confused by a vlm created elsewhere, use a libvlc instance variable to old the vlm libvlc created if --vlm-conf was specified.

This also make sure the vlm created when --vlm-conf is specified gets really destroyed. Because find_object yields vlm and is never released.
parent 2684aa49
...@@ -49,6 +49,10 @@ struct libvlc_int_t ...@@ -49,6 +49,10 @@ struct libvlc_int_t
vlc_object_t *p_interaction; ///< interface interaction object vlc_object_t *p_interaction; ///< interface interaction object
vlc_object_t *p_vlm; ///< vlm if created from libvlc-common.
/// (this is clearly private and
// shouldn't be used)
void *p_stats_computer; ///< Input thread computing stats (needs cleanup) void *p_stats_computer; ///< Input thread computing stats (needs cleanup)
global_stats_t *p_stats; ///< Global statistics global_stats_t *p_stats; ///< Global statistics
......
...@@ -186,6 +186,7 @@ libvlc_int_t * libvlc_InternalCreate( void ) ...@@ -186,6 +186,7 @@ libvlc_int_t * libvlc_InternalCreate( void )
} }
p_libvlc->p_playlist = NULL; p_libvlc->p_playlist = NULL;
p_libvlc->p_interaction = NULL; p_libvlc->p_interaction = NULL;
p_libvlc->p_vlm = NULL;
p_libvlc->psz_object_name = "libvlc"; p_libvlc->psz_object_name = "libvlc";
/* Initialize message queue */ /* Initialize message queue */
...@@ -772,7 +773,8 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, ...@@ -772,7 +773,8 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
psz_parser = config_GetPsz( p_libvlc, "vlm-conf" ); psz_parser = config_GetPsz( p_libvlc, "vlm-conf" );
if( psz_parser && *psz_parser ) if( psz_parser && *psz_parser )
{ {
if( !vlm_New( p_libvlc ) ) p_libvlc->p_vlm = vlm_New( p_libvlc );
if( !p_libvlc->p_vlm )
msg_Err( p_libvlc, "VLM initialization failed" ); msg_Err( p_libvlc, "VLM initialization failed" );
} }
free( psz_parser ); free( psz_parser );
...@@ -934,7 +936,6 @@ int libvlc_InternalCleanup( libvlc_int_t *p_libvlc ) ...@@ -934,7 +936,6 @@ int libvlc_InternalCleanup( libvlc_int_t *p_libvlc )
vout_thread_t * p_vout = NULL; vout_thread_t * p_vout = NULL;
aout_instance_t * p_aout = NULL; aout_instance_t * p_aout = NULL;
announce_handler_t * p_announce = NULL; announce_handler_t * p_announce = NULL;
vlm_t * p_vlm = NULL;
/* Ask the interfaces to stop and destroy them */ /* Ask the interfaces to stop and destroy them */
msg_Dbg( p_libvlc, "removing all interfaces" ); msg_Dbg( p_libvlc, "removing all interfaces" );
...@@ -998,9 +999,10 @@ int libvlc_InternalCleanup( libvlc_int_t *p_libvlc ) ...@@ -998,9 +999,10 @@ int libvlc_InternalCleanup( libvlc_int_t *p_libvlc )
FREENULL( p_libvlc->p_stats ); FREENULL( p_libvlc->p_stats );
/* Destroy VLM if created in libvlc_InternalInit */ /* Destroy VLM if created in libvlc_InternalInit */
p_vlm = vlc_object_find( p_libvlc, VLC_OBJECT_VLM, FIND_ANYWHERE ); if( p_libvlc->p_vlm )
if( p_vlm ) {
vlm_Delete( p_vlm ); vlm_Delete( p_libvlc->p_vlm );
}
return VLC_SUCCESS; return VLC_SUCCESS;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment