if( !p_input->p )
return NULL;
- /* One "randomly" selected input thread is responsible for computing
- * the global stats. Check if there is already someone doing this */
- if( p_input->p_libvlc->p_stats && !b_quick )
- {
- libvlc_priv_t *p_private = libvlc_priv( p_input->p_libvlc );
- vlc_mutex_lock( &p_input->p_libvlc->p_stats->lock );
- if( p_private->p_stats_computer == NULL )
- p_private->p_stats_computer = p_input;
- vlc_mutex_unlock( &p_input->p_libvlc->p_stats->lock );
- }
-
p_input->b_preparsing = b_quick;
p_input->psz_header = psz_header ? strdup( psz_header ) : NULL;
static void MainLoopStatistic( input_thread_t *p_input )
{
stats_ComputeInputStats( p_input, p_input->p->p_item->p_stats );
- /* Are we the thread responsible for computing global stats ? */
- if( libvlc_priv( p_input->p_libvlc )->p_stats_computer == p_input )
- {
- stats_ComputeGlobalStats( p_input->p_libvlc,
- p_input->p_libvlc->p_stats );
- }
input_SendEventStatistics( p_input );
}
/* make sure we are up to date */
stats_ComputeInputStats( p_input, p_input->p->p_item->p_stats );
- if( p_private->p_stats_computer == p_input )
- {
- stats_ComputeGlobalStats( p_input->p_libvlc,
- p_input->p_libvlc->p_stats );
- /* FIXME how can it be thread safe ? */
- p_private->p_stats_computer = NULL;
- }
CL_CO( read_bytes );
CL_CO( read_packets );
CL_CO( demux_read );
priv->i_timers = 0;
priv->pp_timers = NULL;
- /* Init stats */
- p_libvlc->p_stats = (global_stats_t *)malloc( sizeof( global_stats_t ) );
- if( !p_libvlc->p_stats )
- {
- vlc_object_release( p_libvlc );
- return VLC_ENOMEM; /* FIXME: leaks */
- }
- vlc_mutex_init( &p_libvlc->p_stats->lock );
- priv->p_stats_computer = NULL;
-
priv->i_last_input_id = 0; /* Not very safe, should be removed */
/*
stats_TimersCleanAll( p_libvlc );
msg_Dbg( p_libvlc, "removing stats" );
- vlc_mutex_destroy( &p_libvlc->p_stats->lock );
- FREENULL( p_libvlc->p_stats );
#ifndef WIN32
char* psz_pidfile = NULL;
int i_timers; ///< Number of timers
bool b_stats; ///< Whether to collect stats
- void *p_stats_computer; ///< Input thread computing stats
- /// (needs cleanup)
-
/* Singleton objects */
module_t *p_memcpy_module; ///< Fast memcpy plugin used
playlist_t *p_playlist; //< the playlist singleton