VLC_EXPORT( playlist_item_t *, playlist_ChildSearchName, (playlist_item_t*, const char* ) );
VLC_EXPORT( int, playlist_NodeDelete, ( playlist_t *, playlist_item_t *, vlc_bool_t , vlc_bool_t ) );
VLC_EXPORT( int, playlist_NodeEmpty, ( playlist_t *, playlist_item_t *, vlc_bool_t ) );
+VLC_EXPORT( void, playlist_NodesCreateForSD, (playlist_t *, char *, playlist_item_t **, playlist_item_t ** ) );
/* Tree walking - These functions are only for playlist, not plugins */
playlist_item_t *playlist_GetNextLeaf( playlist_t *p_playlist,
void (*playlist_NodeDump_inner) (playlist_t *p_playlist, playlist_item_t *p_item, int i_level);
int (*__intf_UserOkayCancel_inner) (vlc_object_t*, const char*, const char*);
int (*__intf_UserStringInput_inner) (vlc_object_t*, const char*, const char*, char **);
+ void (*playlist_NodesCreateForSD_inner) (playlist_t *, char *, playlist_item_t **, playlist_item_t **);
};
# if defined (__PLUGIN__)
# define aout_FiltersCreatePipeline (p_symbols)->aout_FiltersCreatePipeline_inner
# define playlist_NodeDump (p_symbols)->playlist_NodeDump_inner
# define __intf_UserOkayCancel (p_symbols)->__intf_UserOkayCancel_inner
# define __intf_UserStringInput (p_symbols)->__intf_UserStringInput_inner
+# define playlist_NodesCreateForSD (p_symbols)->playlist_NodesCreateForSD_inner
# elif defined (HAVE_DYNAMIC_PLUGINS) && !defined (__BUILTIN__)
/******************************************************************
* STORE_SYMBOLS: store VLC APIs into p_symbols for plugin access.
((p_symbols)->playlist_NodeDump_inner) = playlist_NodeDump; \
((p_symbols)->__intf_UserOkayCancel_inner) = __intf_UserOkayCancel; \
((p_symbols)->__intf_UserStringInput_inner) = __intf_UserStringInput; \
+ ((p_symbols)->playlist_NodesCreateForSD_inner) = playlist_NodesCreateForSD; \
(p_symbols)->net_ConvertIPv4_deprecated = NULL; \
(p_symbols)->playlist_ItemAddParent_deprecated = NULL; \
(p_symbols)->playlist_CopyParents_deprecated = NULL; \
struct services_discovery_sys_t
{
/* playlist node */
- playlist_item_t *p_node;
+ playlist_item_t *p_node_cat, *p_node_one;
playlist_t *p_playlist;
AvahiSimplePoll *simple_poll;
goto error;
}
- p_view = playlist_ViewFind( p_sys->p_playlist, VIEW_CATEGORY );
- p_sys->p_node = playlist_NodeCreate( p_sys->p_playlist, VIEW_CATEGORY,
- _("Bonjour"), p_view->p_root );
-
- p_sys->p_node->i_flags |= PLAYLIST_RO_FLAG;
- val.b_bool = VLC_TRUE;
- var_Set( p_sys->p_playlist, "intf-change", val );
-
+ playlist_NodesCreateForSD( p_playlist, _("Bonjour"), &p_sys->p_node_cat,
+ &p_sys->p_node_one );
p_sd->pf_run = Run;
return VLC_SUCCESS;
return VLC_EGENERIC;
}
- p_sys->p_node_cat = playlist_NodeCreate( p_playlist, _("Devices"),
- p_playlist->p_root_category );
- p_sys->p_node_cat->i_flags |= PLAYLIST_RO_FLAG;
- p_sys->p_node_one = playlist_NodeCreate( p_playlist, _("Devices"),
- p_playlist->p_root_onelevel );
- p_sys->p_node_one->i_flags |= PLAYLIST_RO_FLAG;
-
- val.b_bool = VLC_TRUE;
- var_Set( p_playlist, "intf-change", val );
-
+ playlist_NodesCreateForSD( p_playlist, _("Devices"),
+ &p_sys->p_node_cat, &p_sys->p_node_one );
vlc_object_release( p_playlist );
return VLC_SUCCESS;
msg_Warn( p_sd, "unable to find playlist, cancelling SAP listening");
return VLC_EGENERIC;
}
- p_sys->p_node_cat = playlist_NodeCreate( p_sys->p_playlist,
- _("SAP sessions"),
- p_sys->p_playlist->p_root_category );
- p_sys->p_node_cat->i_flags |= PLAYLIST_RO_FLAG;
- p_sys->p_node_cat->i_flags |= PLAYLIST_SKIP_FLAG;
-
- p_sys->p_node_one = playlist_NodeCreate( p_sys->p_playlist,
- _("SAP sessions"),
- p_sys->p_playlist->p_root_onelevel );
- p_sys->p_node_one->i_flags |= PLAYLIST_RO_FLAG;
- p_sys->p_node_one->i_flags |= PLAYLIST_SKIP_FLAG;
-
- val.b_bool = VLC_TRUE;
- var_Set( p_sys->p_playlist, "intf-change", val );
+
+ playlist_NodesCreateForSD( p_sys->p_playlist, _("SAP sessions"),
+ &p_sys->p_node_cat, &p_sys->p_node_one );
p_sys->i_announces = 0;
p_sys->pp_announces = NULL;
return NULL;
}
+
+void playlist_NodesCreateForSD( playlist_t *p_playlist, char *psz_name,
+ playlist_item_t **pp_node_cat,
+ playlist_item_t **pp_node_one )
+{
+ *pp_node_cat = playlist_NodeCreate( p_playlist, psz_name,
+ p_playlist->p_root_category );
+ (*pp_node_cat)->i_flags |= PLAYLIST_RO_FLAG;
+ (*pp_node_cat)->i_flags |= PLAYLIST_SKIP_FLAG;
+
+ *pp_node_one = playlist_NodeCreate( p_playlist, psz_name,
+ p_playlist->p_root_onelevel );
+ (*pp_node_one)->i_flags |= PLAYLIST_RO_FLAG;
+ (*pp_node_one)->i_flags |= PLAYLIST_SKIP_FLAG;
+}
+
+
/**********************************************************************
* Tree walking functions
**********************************************************************/