struct playlist_t
{
VLC_COMMON_MEMBERS
+ struct playlist_internal_t * p_internal; /**< Internal members */
+
int i_enabled; /**< How many items are enabled ? */
playlist_item_array_t items; /**< Arrays of items */
int i_last_playlist_id; /**< Last id to an item */
int i_last_input_id ; /**< Last id on an input */
- struct playlist_archived_services_discovery_t {
- services_discovery_t * p_sd; /* The service discovery module */
- playlist_item_t * p_cat;/* Corresponding item in the category view */
- playlist_item_t * p_one;/* Corresponding item in the one level view */
- } **pp_asds; /**< Loaded service discovery modules */
- int i_asds; /**< Number of service discovery modules */
-
/* Predefined items */
playlist_item_t * p_root_category; /**< Root of category tree */
playlist_item_t * p_root_onelevel; /**< Root of onelevel tree */
msg_Err( p_parent, "out of memory" );
return NULL;
}
+
+ p_playlist->p_internal = malloc(sizeof(struct playlist_internal_t));
+ memset( p_playlist->p_internal, 0, sizeof(struct playlist_internal_t) );
+
p_parent->p_libvlc->p_playlist = p_playlist;
VariablesInit( p_playlist );
vlc_mutex_destroy( &p_playlist->gc_lock );
vlc_object_detach( p_playlist );
+ free( p_playlist->p_internal );
vlc_object_destroy( p_playlist );
}
vout_Destroy( (vout_thread_t *)p_obj );
}
- while( p_playlist->i_asds )
+ while( p_playlist->p_internal->i_asds )
{
playlist_ServicesDiscoveryRemove( p_playlist,
- p_playlist->pp_asds[0]->p_sd->psz_module );
+ p_playlist->p_internal->pp_asds[0]->p_sd->psz_module );
}
playlist_MLDump( p_playlist );
DECL_ARRAY(playlist_album_t) albums;
};
+typedef struct playlist_archived_services_discovery_t {
+ services_discovery_t * p_sd; /* The service discovery module */
+ playlist_item_t * p_cat;/* Corresponding item in the category view */
+ playlist_item_t * p_one;/* Corresponding item in the one level view */
+} playlist_archived_services_discovery_t;
+
+struct playlist_internal_t {
+ struct playlist_archived_services_discovery_t
+ **pp_asds; /**< Loaded service discovery modules */
+ int i_asds; /**< Number of service discovery modules */
+};
+
+
/*****************************************************************************
* Prototypes
*****************************************************************************/
/*
* Playlist - Services discovery bridge
*/
-
+
/* A new item has been added to a certain sd */
static void playlist_sd_item_added( const vlc_event_t * p_event, void * user_data )
{
p_asd->p_cat = p_cat;
PL_LOCK;
- TAB_APPEND( p_playlist->i_asds, p_playlist->pp_asds, p_asd );
+ TAB_APPEND( p_playlist->p_internal->i_asds, p_playlist->p_internal->pp_asds, p_asd );
PL_UNLOCK;
}
struct playlist_archived_services_discovery_t *p_asd = NULL;
PL_LOCK;
- for( i = 0 ; i< p_playlist->i_asds ; i ++ )
+ for( i = 0 ; i< p_playlist->p_internal->i_asds ; i ++ )
{
- if( !strcmp( psz_module, p_playlist->pp_asds[i]->p_sd->psz_module ) )
+ if( !strcmp( psz_module, p_playlist->p_internal->pp_asds[i]->p_sd->psz_module ) )
{
- p_asd = p_playlist->pp_asds[i];
- REMOVE_ELEM( p_playlist->pp_asds, p_playlist->i_asds, i );
+ p_asd = p_playlist->p_internal->pp_asds[i];
+ REMOVE_ELEM( p_playlist->p_internal->pp_asds, p_playlist->p_internal->i_asds, i );
break;
}
}
int i;
PL_LOCK;
- for( i = 0 ; i< p_playlist->i_asds ; i ++ )
+ for( i = 0 ; i< p_playlist->p_internal->i_asds ; i ++ )
{
- if( !strcmp( psz_module, p_playlist->pp_asds[i]->p_sd->psz_module ) )
+ if( !strcmp( psz_module, p_playlist->p_internal->pp_asds[i]->p_sd->psz_module ) )
{
PL_UNLOCK;
return VLC_TRUE;