From 6b42b421710760b88561364ecc585b93aee7790a Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sun, 4 May 2008 21:36:25 +0300 Subject: [PATCH] Privatize the stats computer --- include/vlc_main.h | 1 - src/input/input.c | 17 +++++++++-------- src/libvlc-common.c | 2 +- src/libvlc.h | 3 +++ 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/include/vlc_main.h b/include/vlc_main.h index 9039cb8938..76356bcaa0 100644 --- a/include/vlc_main.h +++ b/include/vlc_main.h @@ -45,7 +45,6 @@ struct libvlc_int_t playlist_t *p_playlist; ///< playlist object - void *p_stats_computer; ///< Input thread computing stats (needs cleanup) global_stats_t *p_stats; ///< Global statistics /* There is no real reason to keep a list of items, but not to break diff --git a/src/input/input.c b/src/input/input.c index 09608367d1..fd9c4cfcf9 100644 --- a/src/input/input.c +++ b/src/input/input.c @@ -158,11 +158,10 @@ static input_thread_t *Create( vlc_object_t *p_parent, input_item_t *p_item, * the global stats. Check if there is already someone doing this */ if( p_input->p_libvlc->p_stats && !b_quick ) { + libvlc_priv_t *priv = libvlc_priv (p_input->p_libvlc); vlc_mutex_lock( &p_input->p_libvlc->p_stats->lock ); - if( p_input->p_libvlc->p_stats_computer == NULL ) - { - p_input->p_libvlc->p_stats_computer = p_input; - } + if( priv->p_stats_computer == NULL ) + priv->p_stats_computer = p_input; vlc_mutex_unlock( &p_input->p_libvlc->p_stats->lock ); } @@ -779,10 +778,10 @@ static void MainLoop( input_thread_t *p_input ) { stats_ComputeInputStats( p_input, p_input->p->input.p_item->p_stats ); /* Are we the thread responsible for computing global stats ? */ - if( p_input->p_libvlc->p_stats_computer == p_input ) + if( libvlc_priv (p_input->p_libvlc)->p_stats_computer == p_input ) { stats_ComputeGlobalStats( p_input->p_libvlc, - p_input->p_libvlc->p_stats ); + p_input->p_libvlc->p_stats ); } } } @@ -1345,13 +1344,15 @@ static void End( input_thread_t * p_input ) #define CL_CO( c ) stats_CounterClean( p_input->p->counters.p_##c ); p_input->p->counters.p_##c = NULL; if( libvlc_stats (p_input) ) { + libvlc_priv_t *priv = libvlc_priv (p_input->p_libvlc); + /* make sure we are up to date */ stats_ComputeInputStats( p_input, p_input->p->input.p_item->p_stats ); - if( p_input->p_libvlc->p_stats_computer == p_input ) + if( priv->p_stats_computer == p_input ) { stats_ComputeGlobalStats( p_input->p_libvlc, p_input->p_libvlc->p_stats ); - p_input->p_libvlc->p_stats_computer = NULL; + priv->p_stats_computer = NULL; } CL_CO( read_bytes ); CL_CO( read_packets ); diff --git a/src/libvlc-common.c b/src/libvlc-common.c index 7be719c8a7..145268e40a 100644 --- a/src/libvlc-common.c +++ b/src/libvlc-common.c @@ -722,7 +722,7 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, return VLC_ENOMEM; } vlc_mutex_init( &p_libvlc->p_stats->lock ); - p_libvlc->p_stats_computer = NULL; + priv->p_stats_computer = NULL; /* Init the array that holds every input item */ ARRAY_INIT( p_libvlc->input_items ); diff --git a/src/libvlc.h b/src/libvlc.h index 9088550afb..a359e525b2 100644 --- a/src/libvlc.h +++ b/src/libvlc.h @@ -223,6 +223,9 @@ typedef struct libvlc_priv_t int i_timers; ///< Number of timers bool b_stats; ///< Whether to collect stats + void *p_stats_computer; ///< Input thread computing stats + /// (needs cleanup) + module_t *p_memcpy_module; ///< Fast memcpy plugin used vlm_t *p_vlm; ///< VLM if created from libvlc-common.c vlc_object_t *p_interaction; ///< interface interaction object -- 2.39.2