Changeset d52644844b16b544109bc95add4e0b213c01d909

Show
Ignore:
Timestamp:
04/15/08 19:40:25 (5 months ago)
Author:
Pierre d'Herbemont <pdherbemont@videolan.org>
git-committer:
Pierre d'Herbemont <pdherbemont@videolan.org> 1208281225 +0200
git-parent:

[8bd5140a3e179f8d8c75d86e87562ab63cdb2b39]

git-author:
Pierre d'Herbemont <pdherbemont@videolan.org> 1208280571 +0200
Message:

stats: Support per object timer. (and implement stats_TimerClean()).

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • include/vlc_messages.h

    r449fd28 rd526448  
    196196    char              * psz_name; 
    197197    int                 i_type; 
     198    void              * p_obj; 
    198199    int                 i_compute_type; 
    199200    int                 i_samples; 
     
    371372VLC_EXPORT( void,__stats_TimerDump, (vlc_object_t*, unsigned int) ); 
    372373VLC_EXPORT( void,__stats_TimersDumpAll, (vlc_object_t*) ); 
    373 #define stats_TimersClean(a) __stats_TimersClean( VLC_OBJECT(a) ) 
    374 VLC_EXPORT( void, __stats_TimersClean, (vlc_object_t * ) ); 
     374#define stats_TimersCleanAll(a) __stats_TimersCleanAll( VLC_OBJECT(a) ) 
     375VLC_EXPORT( void, __stats_TimersCleanAll, (vlc_object_t * ) ); 
     376 
     377#define stats_TimerClean(a,b) __stats_TimerClean( VLC_OBJECT(a), b ) 
     378VLC_EXPORT( void, __stats_TimerClean, (vlc_object_t *, int ) ); 
    375379 
    376380#endif 
  • src/libvlc-common.c

    r449fd28 rd526448  
    989989 
    990990    stats_TimersDumpAll( p_libvlc ); 
    991     stats_TimersClean( p_libvlc ); 
     991    stats_TimersCleanAll( p_libvlc ); 
    992992 
    993993    /* Free announce handler(s?) */ 
  • src/misc/stats.c

    r449fd28 rd526448  
    143143input_stats_t *stats_NewInputStats( input_thread_t *p_input ) 
    144144{ 
     145    (void)p_input; 
    145146    input_stats_t *p_stats = malloc( sizeof(input_stats_t) ); 
    146147 
     
    287288    for( i = 0 ; i < p_obj->p_libvlc->i_timers; i++ ) 
    288289    { 
    289         if( p_obj->p_libvlc->pp_timers[i]->i_id == i_id ) 
     290        if( p_obj->p_libvlc->pp_timers[i]->i_id == i_id 
     291            && p_obj->p_libvlc->pp_timers[i]->p_obj == p_obj ) 
    290292        { 
    291293            p_counter = p_obj->p_libvlc->pp_timers[i]; 
     
    305307        p_counter->psz_name = strdup( psz_name ); 
    306308        p_counter->i_id = i_id; 
     309        p_counter->p_obj = p_obj; 
    307310        INSERT_ELEM( p_obj->p_libvlc->pp_timers, p_obj->p_libvlc->i_timers, 
    308311                     p_obj->p_libvlc->i_timers, p_counter ); 
     
    321324    if( p_counter->pp_samples[0]->value.b_bool == true ) 
    322325    { 
    323         msg_Warn( p_obj, "timer %s was already started !", psz_name ); 
     326        msg_Warn( p_obj, "timer '%s' was already started !", psz_name ); 
    324327        vlc_mutex_unlock( &p_obj->p_libvlc->timer_lock ); 
    325328        return; 
     
    338341    for( i = 0 ; i < p_obj->p_libvlc->i_timers; i++ ) 
    339342    { 
    340         if( p_obj->p_libvlc->pp_timers[i]->i_id == i_id ) 
     343        if( p_obj->p_libvlc->pp_timers[i]->i_id == i_id 
     344            && p_obj->p_libvlc->pp_timers[i]->p_obj == p_obj ) 
    341345        { 
    342346            p_counter = p_obj->p_libvlc->pp_timers[i]; 
     
    365369    for( i = 0 ; i < p_obj->p_libvlc->i_timers; i++ ) 
    366370    { 
    367         if( p_obj->p_libvlc->pp_timers[i]->i_id == i_id ) 
     371        if( p_obj->p_libvlc->pp_timers[i]->i_id == i_id 
     372            && p_obj->p_libvlc->pp_timers[i]->p_obj == p_obj ) 
    368373        { 
    369374            p_counter = p_obj->p_libvlc->pp_timers[i]; 
     
    385390} 
    386391 
    387 void __stats_TimersClean( vlc_object_t *p_obj ) 
     392void __stats_TimerClean( vlc_object_t *p_obj, int i_id ) 
     393
     394    int i; 
     395    vlc_mutex_lock( &p_obj->p_libvlc->timer_lock ); 
     396    for ( i = p_obj->p_libvlc->i_timers -1 ; i >= 0; i-- ) 
     397    { 
     398        counter_t *p_counter = p_obj->p_libvlc->pp_timers[i]; 
     399        if( p_counter->i_id == i_id && p_counter->p_obj == p_obj ) 
     400        { 
     401            REMOVE_ELEM( p_obj->p_libvlc->pp_timers, 
     402                         p_obj->p_libvlc->i_timers, i ); 
     403            stats_CounterClean( p_counter ); 
     404        } 
     405    } 
     406    vlc_mutex_unlock( &p_obj->p_libvlc->timer_lock ); 
     407
     408 
     409void __stats_TimersCleanAll( vlc_object_t *p_obj ) 
    388410{ 
    389411    int i;