From: RĂ©mi Denis-Courmont Date: Mon, 5 May 2008 19:17:20 +0000 (+0300) Subject: The input_items array is private data. X-Git-Tag: 0.9.0-test0~1139 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=04a4af73ffcb9602a697e5b2bd8df21c9e9b3c6d;p=vlc The input_items array is private data. Hide it before someone thinks (s)he can use it without locking libvlc. --- diff --git a/include/vlc_main.h b/include/vlc_main.h index 76356bcaa0..f4162289c3 100644 --- a/include/vlc_main.h +++ b/include/vlc_main.h @@ -47,10 +47,6 @@ struct libvlc_int_t global_stats_t *p_stats; ///< Global statistics - /* There is no real reason to keep a list of items, but not to break - * everything, let's keep it */ - input_item_array_t input_items; ///< Array of all created input items - int i_last_input_id ; ///< Last id of input item /* Structure storing the action name / key associations */ struct hotkey diff --git a/src/input/item.c b/src/input/item.c index 4aed77ba6d..1432a56c81 100644 --- a/src/input/item.c +++ b/src/input/item.c @@ -183,6 +183,7 @@ char *input_ItemGetInfo( input_item_t *p_i, static void input_ItemDestroy ( gc_object_t *p_this ) { vlc_object_t *p_obj = (vlc_object_t *)p_this->p_destructor_arg; + libvlc_priv_t *priv = libvlc_priv (p_obj->p_libvlc); input_item_t *p_input = (input_item_t *) p_this; int i; @@ -190,9 +191,9 @@ static void input_ItemDestroy ( gc_object_t *p_this ) vlc_mutex_lock( &p_obj->p_libvlc->object_lock ); - ARRAY_BSEARCH( p_obj->p_libvlc->input_items,->i_id, int, p_input->i_id, i); + ARRAY_BSEARCH( priv->input_items,->i_id, int, p_input->i_id, i); if( i != -1 ) - ARRAY_REMOVE( p_obj->p_libvlc->input_items, i); + ARRAY_REMOVE( priv->input_items, i); vlc_mutex_unlock( &p_obj->p_libvlc->object_lock ); @@ -301,14 +302,15 @@ int input_ItemAddInfo( input_item_t *p_i, input_item_t *__input_ItemGetById( vlc_object_t *p_obj, int i_id ) { + libvlc_priv_t *priv = libvlc_priv (p_obj->p_libvlc); input_item_t * p_ret = NULL; int i; vlc_mutex_lock( &p_obj->p_libvlc->object_lock ); - ARRAY_BSEARCH( p_obj->p_libvlc->input_items, ->i_id, int, i_id, i); + ARRAY_BSEARCH( priv->input_items, ->i_id, int, i_id, i); if( i != -1 ) - p_ret = ARRAY_VAL( p_obj->p_libvlc->input_items, i); + p_ret = ARRAY_VAL( priv->input_items, i); vlc_mutex_unlock( &p_obj->p_libvlc->object_lock ); @@ -334,14 +336,16 @@ input_item_t *input_ItemNewWithType( vlc_object_t *p_obj, const char *psz_uri, mtime_t i_duration, int i_type ) { + libvlc_priv_t *priv = libvlc_priv (p_obj->p_libvlc); + DECMALLOC_NULL( p_input, input_item_t ); input_ItemInit( p_obj, p_input ); vlc_gc_init( p_input, input_ItemDestroy, (void *)p_obj ); vlc_mutex_lock( &p_obj->p_libvlc->object_lock ); - p_input->i_id = ++p_obj->p_libvlc->i_last_input_id; - ARRAY_APPEND( p_obj->p_libvlc->input_items, p_input ); + p_input->i_id = ++priv->i_last_input_id; + ARRAY_APPEND( priv->input_items, p_input ); vlc_mutex_unlock( &p_obj->p_libvlc->object_lock ); p_input->b_fixed_name = false; diff --git a/src/libvlc-common.c b/src/libvlc-common.c index 149b4d73dc..1c81ca79e5 100644 --- a/src/libvlc-common.c +++ b/src/libvlc-common.c @@ -720,8 +720,8 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, priv->p_stats_computer = NULL; /* Init the array that holds every input item */ - ARRAY_INIT( p_libvlc->input_items ); - p_libvlc->i_last_input_id = 0; + ARRAY_INIT( priv->input_items ); + priv->i_last_input_id = 0; /* * Initialize hotkey handling @@ -1003,13 +1003,13 @@ int libvlc_InternalCleanup( libvlc_int_t *p_libvlc ) #endif bool b_clean = true; - FOREACH_ARRAY( input_item_t *p_del, p_libvlc->input_items ) + FOREACH_ARRAY( input_item_t *p_del, priv->input_items ) msg_Err( p_libvlc, "input item %p has not been deleted properly: refcount %d, name %s", p_del, p_del->i_gc_refcount, p_del->psz_name ? p_del->psz_name : "(null)" ); b_clean = false; FOREACH_END(); assert( b_clean ); - ARRAY_RESET( p_libvlc->input_items ); + ARRAY_RESET( priv->input_items ); msg_Dbg( p_libvlc, "removing stats" ); vlc_mutex_destroy( &p_libvlc->p_stats->lock ); diff --git a/src/libvlc.h b/src/libvlc.h index a359e525b2..c6c2917a31 100644 --- a/src/libvlc.h +++ b/src/libvlc.h @@ -212,6 +212,11 @@ typedef struct libvlc_priv_t vlc_mutex_t config_lock; ///< config file lock char * psz_configfile; ///< location of config file + /* There is no real reason to keep a list of items, but not to break + * everything, let's keep it */ + input_item_array_t input_items; ///< Array of all created input items + int i_last_input_id ; ///< Last id of input item + /* Messages */ msg_bank_t msg_bank; ///< The message bank int i_verbose; ///< info messages