/** Stuff moved out of vlc_input.h -- FIXME: should probably not be inline * anyway. */ static inline void input_item_Init( vlc_object_t *p_o, input_item_t *p_i ) { memset( p_i, 0, sizeof(input_item_t) ); p_i->psz_name = NULL; p_i->psz_uri = NULL; TAB_INIT( p_i->i_es, p_i->es ); TAB_INIT( p_i->i_tracks, p_i->tracks ); TAB_INIT( p_i->i_options, p_i->ppsz_options ); p_i->optflagv = NULL, p_i->optflagc = 0; TAB_INIT( p_i->i_categories, p_i->pp_categories ); TAB_INIT( p_i->i_epg, p_i->pp_epg ); p_i->i_type = ITEM_TYPE_UNKNOWN; p_i->b_fixed_name = true; p_i->p_stats = NULL; p_i->p_meta = NULL; vlc_mutex_init( &p_i->lock ); vlc_event_manager_t * p_em = &p_i->event_manager; vlc_event_manager_init( p_em, p_i, p_o ); vlc_event_manager_register_event_type( p_em, vlc_InputItemMetaChanged ); vlc_event_manager_register_event_type( p_em, vlc_InputItemSubItemAdded ); vlc_event_manager_register_event_type( p_em, vlc_InputItemSubItemTreeAdded ); vlc_event_manager_register_event_type( p_em, vlc_InputItemDurationChanged ); vlc_event_manager_register_event_type( p_em, vlc_InputItemPreparsedChanged ); vlc_event_manager_register_event_type( p_em, vlc_InputItemNameChanged ); vlc_event_manager_register_event_type( p_em, vlc_InputItemInfoChanged ); vlc_event_manager_register_event_type( p_em, vlc_InputItemErrorWhenReadingChanged ); }
/*******************************************************************//** * Create a Service discovery ***********************************************************************/ services_discovery_t *vlc_sd_Create( vlc_object_t *p_super, const char *cfg ) { services_discovery_t *p_sd; p_sd = vlc_custom_create( p_super, sizeof( *p_sd ), "services discovery" ); if( !p_sd ) return NULL; free(config_ChainCreate( &p_sd->psz_name, &p_sd->p_cfg, cfg )); vlc_event_manager_t *em = &p_sd->event_manager; vlc_event_manager_init( em, p_sd ); vlc_event_manager_register_event_type(em, vlc_ServicesDiscoveryItemAdded); vlc_event_manager_register_event_type(em, vlc_ServicesDiscoveryItemRemoved); vlc_event_manager_register_event_type(em, vlc_ServicesDiscoveryItemRemoveAll); vlc_event_manager_register_event_type(em, vlc_ServicesDiscoveryStarted); vlc_event_manager_register_event_type(em, vlc_ServicesDiscoveryEnded); vlc_object_set_destructor( p_sd, services_discovery_Destructor ); return p_sd; }
/*********************************************************************** * Create ***********************************************************************/ services_discovery_t * services_discovery_Create ( vlc_object_t * p_super, const char * psz_module_name ) { services_discovery_t *p_sd; p_sd = vlc_custom_create( p_super, sizeof( *p_sd ), VLC_OBJECT_GENERIC, "services discovery" ); if( !p_sd ) return NULL; p_sd->pf_run = NULL; p_sd->psz_localized_name = NULL; vlc_event_manager_init( &p_sd->event_manager, p_sd, (vlc_object_t *)p_sd ); vlc_event_manager_register_event_type( &p_sd->event_manager, vlc_ServicesDiscoveryItemAdded ); vlc_event_manager_register_event_type( &p_sd->event_manager, vlc_ServicesDiscoveryItemRemoved ); vlc_event_manager_register_event_type( &p_sd->event_manager, vlc_ServicesDiscoveryStarted ); vlc_event_manager_register_event_type( &p_sd->event_manager, vlc_ServicesDiscoveryEnded ); p_sd->p_module = module_Need( p_sd, "services_discovery", psz_module_name, true ); if( p_sd->p_module == NULL ) { msg_Err( p_super, "no suitable services discovery module" ); vlc_object_release( p_sd ); return NULL; } p_sd->psz_module = strdup( psz_module_name ); p_sd->b_die = false; /* FIXME */ vlc_object_attach( p_sd, p_super ); return p_sd; }