]> git.sesse.net Git - vlc/commitdiff
Privatize the stats computer
authorRémi Denis-Courmont <rem@videolan.org>
Sun, 4 May 2008 18:36:25 +0000 (21:36 +0300)
committerRémi Denis-Courmont <rem@videolan.org>
Sun, 4 May 2008 18:36:25 +0000 (21:36 +0300)
include/vlc_main.h
src/input/input.c
src/libvlc-common.c
src/libvlc.h

index 9039cb8938097dc8e19cd16096e27b823a3a49b3..76356bcaa00959b70f81ccbc8f47c4144033143c 100644 (file)
@@ -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
index 09608367d184733f755e38dd8946c22446e6ca94..fd9c4cfcf90cd687d5217f5bce2217567c4ffc79 100644 (file)
@@ -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 );
index 7be719c8a7ade453df102ebc2b31dff23fd27e29..145268e40afb88eed29c3cbd8faaa341f5096086 100644 (file)
@@ -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 );
index 9088550afbe9d9edac467efc2a700f4990f92ad8..a359e525b2d05d5162a548c333699aead9379449 100644 (file)
@@ -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