Пример #1
0
/* Lock must be held */
static void pop_listener(libvlc_event_manager_t * p_em, libvlc_event_listener_t * listener)
{
    struct queue_elmt * iter = queue(p_em)->first_elmt;
    struct queue_elmt * prev = NULL;
    while (iter) {
        if(listeners_are_equal(&iter->listener, listener))
        {
            struct queue_elmt * to_delete = iter;
            if(!prev)
                queue(p_em)->first_elmt = to_delete->next;
            else
                prev->next = to_delete->next;
            iter = to_delete->next;
            free(to_delete);
#ifndef NDEBUG
            queue(p_em)->count--;
#endif
        }
        else {
            prev = iter;
            iter = iter->next;
        }
    }
    queue(p_em)->last_elmt=prev;
}
Пример #2
0
Файл: event.c Проект: AsamQi/vlc
static bool
group_contains_listener( libvlc_event_listeners_group_t * group,
                         libvlc_event_listener_t * searched_listener )
{
    int i;
    for( i = 0; i < vlc_array_count(&group->listeners); i++ )
    {
        if( listeners_are_equal(searched_listener, vlc_array_item_at_index(&group->listeners, i)) )
            return true;
    }
    return false;
}
Пример #3
0
/* Lock must be held */
static void pop_listener(libvlc_event_manager_t * p_em, libvlc_event_listener_t * listener)
{
    struct queue_elmt * iter = queue(p_em)->elements;
    struct queue_elmt * prev = NULL;
    while (iter) {
        if(listeners_are_equal(&iter->listener, listener))
        {
            struct queue_elmt * to_delete = iter;
            if(!prev)
                queue(p_em)->elements = to_delete->next;
            else
                prev->next = to_delete->next;
            iter = to_delete->next;
            free(to_delete);
        }
        else {
            prev = iter;
            iter = iter->next;
        }
    }
}