Changeset 7e436fa9470869077303878a5b655da1731236dc

Show
Ignore:
Timestamp:
02/25/08 18:50:10 (6 months ago)
Author:
Pierre d'Herbemont <pdherbemont@videolan.org>
git-committer:
Pierre d'Herbemont <pdherbemont@videolan.org> 1203961810 +0000
git-parent:

[d68b821264ac7d5b93098271dd4aaf71fd1a3f41]

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

control/event.c: Use vlc_array_t instead of the macros.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/control/event.c

    r88fc2c2 r7e436fa  
    4343void libvlc_event_init( libvlc_instance_t *p_instance, libvlc_exception_t *p_e ) 
    4444{ 
     45    (void)p_instance;(void)p_e; 
    4546    /* Will certainly be used to install libvlc_instance event */ 
    4647} 
     
    5354void libvlc_event_fini( libvlc_instance_t *p_instance ) 
    5455{ 
     56    (void)p_instance; 
    5557} 
    5658 
     
    7678    p_em->p_libvlc_instance = p_libvlc_inst; 
    7779    libvlc_retain( p_libvlc_inst ); 
    78     ARRAY_INIT( p_em->listeners_groups ); 
     80    vlc_array_init( &p_em->listeners_groups ); 
    7981    vlc_mutex_init( p_libvlc_inst->p_libvlc_int, &p_em->object_lock ); 
    8082    vlc_mutex_init( p_libvlc_inst->p_libvlc_int, &p_em->event_sending_lock ); 
     
    8991void libvlc_event_manager_release( libvlc_event_manager_t * p_em ) 
    9092{ 
    91     libvlc_event_listeners_group_t * listeners_group
    92     libvlc_event_listener_t * listener
     93    libvlc_event_listeners_group_t * p_lg
     94    int i,j
    9395 
    9496    vlc_mutex_destroy( &p_em->event_sending_lock ); 
    9597    vlc_mutex_destroy( &p_em->object_lock ); 
    9698 
    97     FOREACH_ARRAY( listeners_group, p_em->listeners_groups ) 
    98         FOREACH_ARRAY( listener, listeners_group->listeners ) 
    99             free( listener ); 
    100         FOREACH_END() 
    101         ARRAY_RESET( listeners_group->listeners ); 
    102         free( listeners_group ); 
    103     FOREACH_END() 
    104     ARRAY_RESET( p_em->listeners_groups ); 
    105  
     99    for( i = 0; i < vlc_array_count(&p_em->listeners_groups); i++) 
     100    { 
     101        p_lg = vlc_array_item_at_index( &p_em->listeners_groups, i ); 
     102 
     103        for( j = 0; j < vlc_array_count(&p_lg->listeners); j++) 
     104            free( vlc_array_item_at_index( &p_em->listeners_groups, i ) ); 
     105 
     106        vlc_array_clear( &p_lg->listeners ); 
     107        free( p_lg ); 
     108    } 
     109    vlc_array_clear( &p_em->listeners_groups ); 
    106110    libvlc_release( p_em->p_libvlc_instance ); 
    107111    free( p_em ); 
     
    127131 
    128132    listeners_group->event_type = event_type; 
    129     ARRAY_INIT( listeners_group->listeners ); 
     133    vlc_array_init( &listeners_group->listeners ); 
    130134 
    131135    vlc_mutex_lock( &p_em->object_lock ); 
    132     ARRAY_APPEND( p_em->listeners_groups, listeners_group ); 
     136    vlc_array_append( &p_em->listeners_groups, listeners_group ); 
    133137    vlc_mutex_unlock( &p_em->object_lock ); 
    134138} 
     
    154158 
    155159    vlc_mutex_lock( &p_em->object_lock ); 
    156     FOREACH_ARRAY( listeners_group, p_em->listeners_groups ) 
     160    for( i = 0; i < vlc_array_count(&p_em->listeners_groups); i++) 
     161    { 
     162        listeners_group = vlc_array_item_at_index(&p_em->listeners_groups, i); 
    157163        if( listeners_group->event_type == p_event->type ) 
    158164        { 
    159             if( listeners_group->listeners.i_size <= 0 ) 
     165            if( vlc_array_count( &listeners_group->listeners ) <= 0 ) 
    160166                break; 
    161167 
    162168            /* Cache a copy of the listener to avoid locking issues */ 
    163             i_cached_listeners = listeners_group->listeners.i_size
     169            i_cached_listeners = vlc_array_count(&listeners_group->listeners)
    164170            array_listeners_cached = malloc(sizeof(libvlc_event_listener_t)*(i_cached_listeners)); 
    165171            if( !array_listeners_cached ) 
     
    170176 
    171177            listener_cached = array_listeners_cached; 
    172             FOREACH_ARRAY( listener, listeners_group->listeners ) 
    173                 memcpy( listener_cached, listener, sizeof(libvlc_event_listener_t)); 
     178            for( i = 0; i < vlc_array_count(&listeners_group->listeners); i++) 
     179            { 
     180                listener = vlc_array_item_at_index(&listeners_group->listeners, i); 
     181                memcpy( listener_cached, listener, sizeof(libvlc_event_listener_t) ); 
    174182                listener_cached++; 
    175             FOREACH_END() 
     183            } 
    176184            break; 
    177185        } 
    178     FOREACH_END() 
     186    } 
    179187 
    180188    vlc_mutex_unlock( &p_em->object_lock ); 
     
    262270    libvlc_event_listeners_group_t * listeners_group; 
    263271    libvlc_event_listener_t * listener; 
     272    int i; 
     273 
    264274    listener = malloc(sizeof(libvlc_event_listener_t)); 
    265275    if( !listener ) 
     
    274284 
    275285    vlc_mutex_lock( &p_event_manager->object_lock ); 
    276     FOREACH_ARRAY( listeners_group, p_event_manager->listeners_groups ) 
     286    for( i = 0; i < vlc_array_count(&p_event_manager->listeners_groups); i++ ) 
     287    { 
     288        listeners_group = vlc_array_item_at_index(&p_event_manager->listeners_groups, i); 
    277289        if( listeners_group->event_type == listener->event_type ) 
    278290        { 
    279             ARRAY_APPEND( listeners_group->listeners, listener ); 
     291            vlc_array_append( &listeners_group->listeners, listener ); 
    280292            vlc_mutex_unlock( &p_event_manager->object_lock ); 
    281293            return; 
    282294        } 
    283     FOREACH_END() 
     295    } 
    284296    vlc_mutex_unlock( &p_event_manager->object_lock ); 
    285297 
     
    319331    libvlc_event_listeners_group_t * listeners_group; 
    320332    libvlc_event_listener_t * listener; 
     333    int i; 
    321334 
    322335    if( lockstate == libvlc_UnLocked ) 
    323336        vlc_mutex_lock( &p_event_manager->event_sending_lock ); 
    324337    vlc_mutex_lock( &p_event_manager->object_lock ); 
    325     FOREACH_ARRAY( listeners_group, p_event_manager->listeners_groups ) 
     338    for( i = 0; i < vlc_array_count(&p_event_manager->listeners_groups); i++) 
     339    { 
     340        listeners_group = vlc_array_item_at_index(&p_event_manager->listeners_groups, i); 
    326341        if( listeners_group->event_type == event_type ) 
    327342        { 
    328             FOREACH_ARRAY( listener, listeners_group->listeners ) 
     343            for( i = 0; i < vlc_array_count(&listeners_group->listeners); i++) 
     344            { 
     345                listener = vlc_array_item_at_index(&listeners_group->listeners, i); 
    329346                if( listener->event_type == event_type && 
    330347                    listener->pf_callback == pf_callback && 
     
    333350                    /* that's our listener */ 
    334351                    free( listener ); 
    335                     ARRAY_REMOVE( listeners_group->listeners, 
    336                         fe_idx /* This comes from the macro (and that's why 
    337                                   I hate macro) */ ); 
     352                    vlc_array_remove( &listeners_group->listeners, i ); 
    338353                    vlc_mutex_unlock( &p_event_manager->object_lock ); 
    339354                    if( lockstate == libvlc_UnLocked ) 
     
    341356                    return; 
    342357                } 
    343             FOREACH_END() 
     358            } 
    344359        } 
    345     FOREACH_END() 
     360    } 
    346361    vlc_mutex_unlock( &p_event_manager->object_lock ); 
    347362    if( lockstate == libvlc_UnLocked )