/* playlist node */
playlist_item_t *p_node;
+ playlist_t *p_playlist;
/* charset conversion */
vlc_iconv_t iconvHandle;
services_discovery_sys_t *p_sys = (services_discovery_sys_t *)
malloc( sizeof( services_discovery_sys_t ) );
- playlist_t *p_playlist;
playlist_view_t *p_view;
char *psz_addr, *psz_charset;
vlc_value_t val;
}
/* Create our playlist node */
- p_playlist = (playlist_t *)vlc_object_find( p_sd, VLC_OBJECT_PLAYLIST,
- FIND_ANYWHERE );
- if( !p_playlist )
+ p_sys->p_playlist = (playlist_t *)vlc_object_find( p_sd,
+ VLC_OBJECT_PLAYLIST,
+ FIND_ANYWHERE );
+ if( !p_sys->p_playlist )
{
msg_Warn( p_sd, "unable to find playlist, cancelling SAP listening");
return VLC_EGENERIC;
}
- p_view = playlist_ViewFind( p_playlist, VIEW_CATEGORY );
- p_sys->p_node = playlist_NodeCreate( p_playlist, VIEW_CATEGORY,
+ p_view = playlist_ViewFind( p_sys->p_playlist, VIEW_CATEGORY );
+ p_sys->p_node = playlist_NodeCreate( p_sys->p_playlist, VIEW_CATEGORY,
_("SAP"), p_view->p_root );
p_sys->p_node->i_flags |= PLAYLIST_RO_FLAG;
p_sys->p_node->i_flags =~ PLAYLIST_SKIP_FLAG;
val.b_bool = VLC_TRUE;
- var_Set( p_playlist, "intf-change", val );
-
- vlc_object_release( p_playlist );
+ var_Set( p_sys->p_playlist, "intf-change", val );
p_sys->i_announces = 0;
p_sys->pp_announces = NULL;
services_discovery_t *p_sd = ( services_discovery_t* )p_this;
services_discovery_sys_t *p_sys = p_sd->p_sys;
- playlist_t *p_playlist;
int i;
for( i = p_sys->i_fd-1 ; i >= 0 ; i-- )
}
FREE( p_sys->pp_announces );
- p_playlist = (playlist_t *) vlc_object_find( p_sd, VLC_OBJECT_PLAYLIST,
- FIND_ANYWHERE );
-
- if( p_playlist )
+ if( p_sys->p_playlist )
{
- playlist_NodeDelete( p_playlist, p_sys->p_node, VLC_TRUE , VLC_TRUE );
- vlc_object_release( p_playlist );
+ playlist_NodeDelete( p_sys->p_playlist, p_sys->p_node, VLC_TRUE,
+ VLC_TRUE );
+ vlc_object_release( p_sys->p_playlist );
}
vlc_iconv_close( p_sys->iconvHandle );
static void Run( services_discovery_t *p_sd )
{
int i;
- playlist_t *p_playlist;
/* read SAP packets */
while( !p_sd->b_die )
if( mdate() - p_sd->p_sys->pp_announces[i]->i_last > i_timeout )
{
struct sap_announce_t *p_announce;
- playlist_item_t * p_item;
p_announce = p_sd->p_sys->pp_announces[i];
/* Remove the playlist item */
- p_playlist = vlc_object_find( p_sd, VLC_OBJECT_PLAYLIST,
- FIND_ANYWHERE );
- if( p_playlist )
- {
- p_item = playlist_ItemGetById( p_playlist,
- p_announce->i_item_id );
- if( !p_item ) continue;
-
- msg_Dbg( p_sd, "Time out for %s, deleting (%i/%i)",
- p_item->input.psz_name,
- i , p_sd->p_sys->i_announces );
-
- playlist_Delete( p_playlist, p_announce->i_item_id );
- vlc_object_release( p_playlist );
- }
+ playlist_LockDelete( p_sd->p_sys->p_playlist,
+ p_announce->i_item_id );
/* Remove the sap_announce from the array */
REMOVE_ELEM( p_sd->p_sys->pp_announces,
sap_announce_t *CreateAnnounce( services_discovery_t *p_sd, uint16_t i_hash,
sdp_t *p_sdp )
{
- playlist_t *p_playlist;
playlist_item_t *p_item, *p_child;
char *psz_value;
sap_announce_t *p_sap = (sap_announce_t *)malloc(
psz_value = GetAttribute( p_sap->p_sdp, "plgroup" );
}
- p_playlist = (playlist_t *)vlc_object_find( p_sd, VLC_OBJECT_PLAYLIST,
- FIND_ANYWHERE );
- if( !p_playlist )
- {
- msg_Err( p_sd, "playlist not found" );
- free( p_sap );
- return NULL;
- }
-
if( psz_value != NULL )
{
char *psz_grp = convert_from_utf8( p_sd, psz_value );
if( p_child == NULL )
{
- p_child = playlist_NodeCreate( p_playlist, VIEW_CATEGORY,
- psz_grp, p_sd->p_sys->p_node );
+ p_child = playlist_NodeCreate( p_sd->p_sys->p_playlist,
+ VIEW_CATEGORY, psz_grp,
+ p_sd->p_sys->p_node );
p_child->i_flags =~ PLAYLIST_SKIP_FLAG;
}
free( psz_grp );
}
else
{
- vlc_object_release( p_playlist );
msg_Err( p_sd, "out of memory");
free( p_sap );
return NULL;
p_item->i_flags &= ~PLAYLIST_SKIP_FLAG;
p_item->i_flags &= ~PLAYLIST_SAVE_FLAG;
- playlist_NodeAddItem( p_playlist, p_item, VIEW_CATEGORY, p_child,
- PLAYLIST_APPEND, PLAYLIST_END );
-
- vlc_object_release( p_playlist );
+ playlist_NodeAddItem( p_sd->p_sys->p_playlist, p_item, VIEW_CATEGORY,
+ p_child, PLAYLIST_APPEND, PLAYLIST_END );
p_sap->i_item_id = p_item->input.i_id;
sap_announce_t *p_announce )
{
int i;
- playlist_t *p_playlist = (playlist_t *)vlc_object_find( p_sd,
- VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
if( p_announce->p_sdp ) FreeSDP( p_announce->p_sdp );
- if( !p_playlist )
- {
- free( p_announce );
- return VLC_EGENERIC;
- }
-
if( p_announce->i_item_id > -1 )
{
- playlist_LockDelete( p_playlist, p_announce->i_item_id );
+ playlist_LockDelete( p_sd->p_sys->p_playlist, p_announce->i_item_id );
}
for( i = 0; i< p_sd->p_sys->i_announces; i++)
}
}
- vlc_object_release( p_playlist );
-
free( p_announce );
return VLC_SUCCESS;