X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcontrol%2Fvlm.c;h=dd8a4598aa2c7104512214617dd83224de1a3f61;hb=12ade3e3bc975d5426ba4af155b7372c31093b31;hp=b0ba8d55463118b048239735d47176a6b04450c7;hpb=0884a16caf862e30dc70a0c11fb8168128f2cce9;p=vlc diff --git a/src/control/vlm.c b/src/control/vlm.c index b0ba8d5546..dd8a4598aa 100644 --- a/src/control/vlm.c +++ b/src/control/vlm.c @@ -30,6 +30,7 @@ #include #include #include +#include #include "libvlc_internal.h" @@ -37,14 +38,13 @@ static int VlmEvent( vlc_object_t *p_this, const char * name, vlc_value_t old_val, vlc_value_t newval, void *param ) { + VLC_UNUSED(p_this); + VLC_UNUSED(name); + VLC_UNUSED(old_val); vlm_event_t *event = (vlm_event_t*)newval.p_address; libvlc_event_manager_t *p_event_manager = (libvlc_event_manager_t *) param; libvlc_event_t libvlc_event; - VLC_UNUSED( p_this ); - VLC_UNUSED( name ); - VLC_UNUSED( old_val ); - libvlc_event.u.vlm_media_event.psz_instance_name = NULL; libvlc_event.u.vlm_media_event.psz_media_name = event->psz_name; @@ -119,47 +119,47 @@ static void libvlc_vlm_release_internal( libvlc_instance_t *p_instance ) p_instance->libvlc_vlm.p_vlm = NULL; } -static int libvlc_vlm_init( libvlc_instance_t *p_instance, - libvlc_exception_t *p_exception ) +static int libvlc_vlm_init( libvlc_instance_t *p_instance ) { if( !p_instance->libvlc_vlm.p_event_manager ) { p_instance->libvlc_vlm.p_event_manager = - libvlc_event_manager_new( p_instance->libvlc_vlm.p_vlm, - p_instance, p_exception ); + libvlc_event_manager_new( p_instance->libvlc_vlm.p_vlm, p_instance ); + if( unlikely(p_instance->libvlc_vlm.p_event_manager == NULL) ) + return VLC_ENOMEM; libvlc_event_manager_register_event_type( p_instance->libvlc_vlm.p_event_manager, - libvlc_VlmMediaAdded, NULL ); + libvlc_VlmMediaAdded ); libvlc_event_manager_register_event_type( p_instance->libvlc_vlm.p_event_manager, - libvlc_VlmMediaRemoved, NULL ); + libvlc_VlmMediaRemoved ); libvlc_event_manager_register_event_type( p_instance->libvlc_vlm.p_event_manager, - libvlc_VlmMediaChanged, NULL ); + libvlc_VlmMediaChanged ); libvlc_event_manager_register_event_type( p_instance->libvlc_vlm.p_event_manager, - libvlc_VlmMediaInstanceStarted, NULL ); + libvlc_VlmMediaInstanceStarted ); libvlc_event_manager_register_event_type( p_instance->libvlc_vlm.p_event_manager, - libvlc_VlmMediaInstanceStopped, NULL ); + libvlc_VlmMediaInstanceStopped ); libvlc_event_manager_register_event_type( p_instance->libvlc_vlm.p_event_manager, - libvlc_VlmMediaInstanceStatusInit, NULL ); + libvlc_VlmMediaInstanceStatusInit ); libvlc_event_manager_register_event_type( p_instance->libvlc_vlm.p_event_manager, - libvlc_VlmMediaInstanceStatusOpening, NULL ); + libvlc_VlmMediaInstanceStatusOpening ); libvlc_event_manager_register_event_type( p_instance->libvlc_vlm.p_event_manager, - libvlc_VlmMediaInstanceStatusPlaying, NULL ); + libvlc_VlmMediaInstanceStatusPlaying ); libvlc_event_manager_register_event_type( p_instance->libvlc_vlm.p_event_manager, - libvlc_VlmMediaInstanceStatusPause, NULL ); + libvlc_VlmMediaInstanceStatusPause ); libvlc_event_manager_register_event_type( p_instance->libvlc_vlm.p_event_manager, - libvlc_VlmMediaInstanceStatusEnd, NULL ); + libvlc_VlmMediaInstanceStatusEnd ); libvlc_event_manager_register_event_type( p_instance->libvlc_vlm.p_event_manager, - libvlc_VlmMediaInstanceStatusError, NULL ); + libvlc_VlmMediaInstanceStatusError ); } if( !p_instance->libvlc_vlm.p_vlm ) @@ -167,8 +167,7 @@ static int libvlc_vlm_init( libvlc_instance_t *p_instance, p_instance->libvlc_vlm.p_vlm = vlm_New( p_instance->p_libvlc_int ); if( !p_instance->libvlc_vlm.p_vlm ) { - libvlc_exception_raise( p_exception, - "Unable to create VLM." ); + libvlc_printerr( "VLM not supported or out of memory" ); return VLC_EGENERIC; } var_AddCallback( (vlc_object_t *)p_instance->libvlc_vlm.p_vlm, @@ -180,22 +179,20 @@ static int libvlc_vlm_init( libvlc_instance_t *p_instance, return VLC_SUCCESS; } -void libvlc_vlm_release( libvlc_instance_t *p_instance, - libvlc_exception_t *p_exception) +void libvlc_vlm_release( libvlc_instance_t *p_instance ) { libvlc_vlm_release_internal( p_instance ); } -#define VLM_RET(p,ret) do { \ - if( libvlc_vlm_init( p_instance, p_exception ) ) return ret;\ - (p) = p_instance->libvlc_vlm.p_vlm; \ +#define VLM_RET(p,ret) do { \ + if( libvlc_vlm_init( p_instance ) ) \ + return (ret); \ + (p) = p_instance->libvlc_vlm.p_vlm; \ } while(0) -#define VLM(p) VLM_RET(p,) static vlm_media_instance_t * libvlc_vlm_get_media_instance( libvlc_instance_t *p_instance, - const char *psz_name, int i_minstance_idx, - libvlc_exception_t *p_exception ) + const char *psz_name, int i_minstance_idx ) { vlm_t *p_vlm; vlm_media_instance_t **pp_minstance; @@ -209,8 +206,7 @@ libvlc_vlm_get_media_instance( libvlc_instance_t *p_instance, vlm_Control( p_vlm, VLM_GET_MEDIA_INSTANCES, id, &pp_minstance, &i_minstance ) ) { - libvlc_exception_raise( p_exception, "Unable to get %s instances", - psz_name ); + libvlc_printerr( "%s: media instances not found", psz_name ); return NULL; } p_minstance = NULL; @@ -342,8 +338,7 @@ static char* recurse_answer( vlm_message_t *p_answer, const char* psz_delim, } const char* libvlc_vlm_show_media( libvlc_instance_t *p_instance, - const char *psz_name, - libvlc_exception_t *p_exception ) + const char *psz_name ) { char *psz_message = NULL; vlm_message_t *answer = NULL; @@ -355,44 +350,36 @@ const char* libvlc_vlm_show_media( libvlc_instance_t *p_instance, VLM_RET(p_vlm, NULL); - if( psz_name == NULL ) - { - libvlc_exception_raise( p_exception, "No media name supplied" ); - } - else if( asprintf( &psz_message, "show %s", psz_name ) == -1 ) + assert( psz_name ); + + if( asprintf( &psz_message, "show %s", psz_name ) == -1 ) + return NULL; + + vlm_ExecuteCommand( p_vlm, psz_message, &answer ); + if( answer->psz_value ) { - libvlc_exception_raise( p_exception, "Unable to call show %s", - psz_name ); + libvlc_printerr( "Unable to call show %s: %s", + psz_name, answer->psz_value ); } - else - { - vlm_ExecuteCommand( p_vlm, psz_message, &answer ); - if( answer->psz_value ) + else if ( answer->child ) + { /* in case everything was requested */ + if ( strcmp( psz_name, "" ) == 0 ) { - libvlc_exception_raise( p_exception, "Unable to call show %s: %s", - psz_name, answer->psz_value ); + psz_fmt = "{\n\t%s\n}\n"; + psz_delimiter = "\n\t"; + i_list = 0; } - else if ( answer->child ) { - /* in case everything was requested */ - if ( strcmp( psz_name, "" ) == 0 ) - { - psz_fmt = "{\n\t%s\n}\n"; - psz_delimiter = "\n\t"; - i_list = 0; - } - else - { - psz_fmt = "%s\n"; - psz_delimiter = "\n"; - i_list = 1; - } - if( asprintf( &psz_response, psz_fmt, - recurse_answer( answer, psz_delimiter, i_list ) ) - == -1 ) - { - libvlc_exception_raise( p_exception, "Error in show %s", - psz_name ); - } + else + { + psz_fmt = "%s\n"; + psz_delimiter = "\n"; + i_list = 1; + } + if( asprintf( &psz_response, psz_fmt, + recurse_answer( answer, psz_delimiter, i_list ) ) == -1 ) + { + libvlc_printerr( "Out of memory" ); + psz_response = NULL; } } free( psz_message ); @@ -400,19 +387,18 @@ const char* libvlc_vlm_show_media( libvlc_instance_t *p_instance, } -void libvlc_vlm_add_broadcast( libvlc_instance_t *p_instance, - const char *psz_name, - const char *psz_input, - const char *psz_output, int i_options, - const char * const *ppsz_options, - int b_enabled, int b_loop, - libvlc_exception_t *p_exception ) +int libvlc_vlm_add_broadcast( libvlc_instance_t *p_instance, + const char *psz_name, + const char *psz_input, + const char *psz_output, int i_options, + const char * const *ppsz_options, + int b_enabled, int b_loop ) { vlm_t *p_vlm; vlm_media_t m; int n; - VLM(p_vlm); + VLM_RET(p_vlm, -1); vlm_media_Init( &m ); m.psz_name = strdup( psz_name ); @@ -429,20 +415,23 @@ void libvlc_vlm_add_broadcast( libvlc_instance_t *p_instance, n = vlm_Control( p_vlm, VLM_ADD_MEDIA, &m, NULL ); vlm_media_Clean( &m ); if( n ) - libvlc_exception_raise( p_exception, "Media %s creation failed", - psz_name ); + { + libvlc_printerr( "Media %s creation failed", psz_name ); + return -1; + } + return 0; } -void libvlc_vlm_add_vod( libvlc_instance_t *p_instance, const char *psz_name, - const char *psz_input, int i_options, - const char * const *ppsz_options, int b_enabled, - const char *psz_mux, libvlc_exception_t *p_exception ) +int libvlc_vlm_add_vod( libvlc_instance_t *p_instance, const char *psz_name, + const char *psz_input, int i_options, + const char * const *ppsz_options, int b_enabled, + const char *psz_mux ) { vlm_t *p_vlm; vlm_media_t m; int n; - VLM(p_vlm); + VLM_RET(p_vlm, -1); vlm_media_Init( &m ); m.psz_name = strdup( psz_name ); @@ -457,68 +446,77 @@ void libvlc_vlm_add_vod( libvlc_instance_t *p_instance, const char *psz_name, n = vlm_Control( p_vlm, VLM_ADD_MEDIA, &m, NULL ); vlm_media_Clean( &m ); if( n ) - libvlc_exception_raise( p_exception, "Media %s creation failed", - psz_name ); + { + libvlc_printerr( "Media %s creation failed", psz_name ); + return -1; + } + return 0; } -void libvlc_vlm_del_media( libvlc_instance_t *p_instance, const char *psz_name, - libvlc_exception_t *p_exception ) +int libvlc_vlm_del_media( libvlc_instance_t *p_instance, const char *psz_name ) { vlm_t *p_vlm; int64_t id; - VLM(p_vlm); + VLM_RET(p_vlm, -1); if( vlm_Control( p_vlm, VLM_GET_MEDIA_ID, psz_name, &id ) || vlm_Control( p_vlm, VLM_DEL_MEDIA, id ) ) { - libvlc_exception_raise( p_exception, "Unable to delete %s", psz_name ); + libvlc_printerr( "Unable to delete %s", psz_name ); + return -1; } + return 0; +} + +static vlm_media_t *get_media( libvlc_instance_t *p_instance, + vlm_t **restrict pp_vlm, const char *name ) +{ + vlm_media_t *p_media; + vlm_t *p_vlm; + int64_t id; + + VLM_RET(p_vlm, NULL); + if( vlm_Control( p_vlm, VLM_GET_MEDIA_ID, name, &id ) || + vlm_Control( p_vlm, VLM_GET_MEDIA, id, &p_media ) ) + return NULL; + *pp_vlm = p_vlm; + return p_media; } #define VLM_CHANGE(psz_error, code ) do { \ - vlm_media_t *p_media; \ vlm_t *p_vlm; \ - int64_t id; \ - VLM(p_vlm); \ - if( vlm_Control( p_vlm, VLM_GET_MEDIA_ID, psz_name, &id ) || \ - vlm_Control( p_vlm, VLM_GET_MEDIA, id, &p_media ) ) { \ - libvlc_exception_raise( p_exception, psz_error, psz_name ); \ - return; \ - } \ - if( !p_media ) goto error; \ - \ - code; \ - \ - if( vlm_Control( p_vlm, VLM_CHANGE_MEDIA, p_media ) ) { \ + vlm_media_t *p_media = get_media( p_instance, &p_vlm, psz_name ); \ + if( p_media != NULL ) { \ + code; \ + if( vlm_Control( p_vlm, VLM_CHANGE_MEDIA, p_media ) ) \ + p_vlm = NULL; \ vlm_media_Delete( p_media ); \ - goto error; \ + if( p_vlm != NULL ) \ + return 0; \ } \ - vlm_media_Delete( p_media ); \ - return; \ - error: \ - libvlc_exception_raise( p_exception, psz_error, psz_name );\ + libvlc_printerr( psz_error, psz_name ); \ + return -1; \ } while(0) -void libvlc_vlm_set_enabled( libvlc_instance_t *p_instance, - const char *psz_name, int b_enabled, - libvlc_exception_t *p_exception ) +int libvlc_vlm_set_enabled( libvlc_instance_t *p_instance, + const char *psz_name, int b_enabled ) { #define VLM_CHANGE_CODE { p_media->b_enabled = b_enabled; } VLM_CHANGE( "Unable to delete %s", VLM_CHANGE_CODE ); #undef VLM_CHANGE_CODE } -void libvlc_vlm_set_loop( libvlc_instance_t *p_instance, const char *psz_name, - int b_loop, libvlc_exception_t *p_exception ) +int libvlc_vlm_set_loop( libvlc_instance_t *p_instance, const char *psz_name, + int b_loop ) { #define VLM_CHANGE_CODE { p_media->broadcast.b_loop = b_loop; } VLM_CHANGE( "Unable to change %s loop property", VLM_CHANGE_CODE ); #undef VLM_CHANGE_CODE } -void libvlc_vlm_set_mux( libvlc_instance_t *p_instance, const char *psz_name, - const char *psz_mux, libvlc_exception_t *p_exception ) +int libvlc_vlm_set_mux( libvlc_instance_t *p_instance, const char *psz_name, + const char *psz_mux ) { #define VLM_CHANGE_CODE { if( p_media->b_vod ) { \ free( p_media->vod.psz_mux ); \ @@ -529,9 +527,8 @@ void libvlc_vlm_set_mux( libvlc_instance_t *p_instance, const char *psz_name, #undef VLM_CHANGE_CODE } -void libvlc_vlm_set_output( libvlc_instance_t *p_instance, - const char *psz_name, const char *psz_output, - libvlc_exception_t *p_exception ) +int libvlc_vlm_set_output( libvlc_instance_t *p_instance, + const char *psz_name, const char *psz_output ) { #define VLM_CHANGE_CODE { free( p_media->psz_output ); \ p_media->psz_output = strdup( psz_output ); } @@ -539,9 +536,8 @@ void libvlc_vlm_set_output( libvlc_instance_t *p_instance, #undef VLM_CHANGE_CODE } -void libvlc_vlm_set_input( libvlc_instance_t *p_instance, - const char *psz_name, const char *psz_input, - libvlc_exception_t *p_exception ) +int libvlc_vlm_set_input( libvlc_instance_t *p_instance, + const char *psz_name, const char *psz_input ) { #define VLM_CHANGE_CODE { while( p_media->i_input > 0 ) \ free( p_media->ppsz_input[--p_media->i_input] );\ @@ -551,9 +547,8 @@ void libvlc_vlm_set_input( libvlc_instance_t *p_instance, #undef VLM_CHANGE_CODE } -void libvlc_vlm_add_input( libvlc_instance_t *p_instance, - const char *psz_name, const char *psz_input, - libvlc_exception_t *p_exception ) +int libvlc_vlm_add_input( libvlc_instance_t *p_instance, + const char *psz_name, const char *psz_input ) { #define VLM_CHANGE_CODE { TAB_APPEND( p_media->i_input, p_media->ppsz_input, \ strdup(psz_input) ); } @@ -561,11 +556,11 @@ void libvlc_vlm_add_input( libvlc_instance_t *p_instance, #undef VLM_CHANGE_CODE } -void libvlc_vlm_change_media( libvlc_instance_t *p_instance, - const char *psz_name, const char *psz_input, - const char *psz_output, int i_options, - const char * const *ppsz_options, int b_enabled, - int b_loop, libvlc_exception_t *p_exception ) +int libvlc_vlm_change_media( libvlc_instance_t *p_instance, + const char *psz_name, const char *psz_input, + const char *psz_output, int i_options, + const char * const *ppsz_options, int b_enabled, + int b_loop ) { #define VLM_CHANGE_CODE { int n; \ p_media->b_enabled = b_enabled; \ @@ -586,80 +581,83 @@ void libvlc_vlm_change_media( libvlc_instance_t *p_instance, #undef VLM_CHANGE_CODE } -void libvlc_vlm_play_media( libvlc_instance_t *p_instance, - const char *psz_name, - libvlc_exception_t *p_exception ) +int libvlc_vlm_play_media( libvlc_instance_t *p_instance, + const char *psz_name ) { vlm_t *p_vlm; int64_t id; - VLM(p_vlm); + VLM_RET(p_vlm, -1); if( vlm_Control( p_vlm, VLM_GET_MEDIA_ID, psz_name, &id ) || vlm_Control( p_vlm, VLM_START_MEDIA_BROADCAST_INSTANCE, id, NULL, 0 ) ) { - libvlc_exception_raise( p_exception, "Unable to play %s", psz_name ); + libvlc_printerr( "Unable to play %s", psz_name ); + return -1; } + return 0; } -void libvlc_vlm_stop_media( libvlc_instance_t *p_instance, - const char *psz_name, - libvlc_exception_t *p_exception ) +int libvlc_vlm_stop_media( libvlc_instance_t *p_instance, + const char *psz_name ) { vlm_t *p_vlm; int64_t id; - VLM(p_vlm); + VLM_RET(p_vlm, -1); if( vlm_Control( p_vlm, VLM_GET_MEDIA_ID, psz_name, &id ) || vlm_Control( p_vlm, VLM_STOP_MEDIA_INSTANCE, id, NULL ) ) { - libvlc_exception_raise( p_exception, "Unable to stop %s", psz_name ); + libvlc_printerr( "Unable to stop %s", psz_name ); + return -1; } + return 0; } -void libvlc_vlm_pause_media( libvlc_instance_t *p_instance, - const char *psz_name, - libvlc_exception_t *p_exception ) +int libvlc_vlm_pause_media( libvlc_instance_t *p_instance, + const char *psz_name ) { vlm_t *p_vlm; int64_t id; - VLM(p_vlm); + VLM_RET(p_vlm, -1); if( vlm_Control( p_vlm, VLM_GET_MEDIA_ID, psz_name, &id ) || vlm_Control( p_vlm, VLM_PAUSE_MEDIA_INSTANCE, id, NULL ) ) { - libvlc_exception_raise( p_exception, "Unable to pause %s", psz_name ); + libvlc_printerr( "Unable to pause %s", psz_name ); + return -1; } + return 0; } -void libvlc_vlm_seek_media( libvlc_instance_t *p_instance, - const char *psz_name, float f_percentage, - libvlc_exception_t *p_exception ) +int libvlc_vlm_seek_media( libvlc_instance_t *p_instance, + const char *psz_name, float f_percentage ) { vlm_t *p_vlm; int64_t id; - VLM(p_vlm); + VLM_RET(p_vlm, -1); if( vlm_Control( p_vlm, VLM_GET_MEDIA_ID, psz_name, &id ) || vlm_Control( p_vlm, VLM_SET_MEDIA_INSTANCE_POSITION, id, NULL, f_percentage ) ) - libvlc_exception_raise( p_exception, "Unable to seek %s to %f", - psz_name, f_percentage ); + { + libvlc_printerr( "Unable to seek %s to %f%%", psz_name, f_percentage ); + return -1; + } + return 0; } float libvlc_vlm_get_media_instance_position( libvlc_instance_t *p_instance, const char *psz_name, - int i_instance, - libvlc_exception_t *p_exception ) + int i_instance ) { vlm_media_instance_t *p_mi; float result = -1.; - p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, - i_instance, p_exception ); + p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, i_instance ); if( p_mi ) { result = p_mi->d_position; @@ -669,14 +667,12 @@ float libvlc_vlm_get_media_instance_position( libvlc_instance_t *p_instance, } int libvlc_vlm_get_media_instance_time( libvlc_instance_t *p_instance, - const char *psz_name, int i_instance, - libvlc_exception_t *p_exception ) + const char *psz_name, int i_instance ) { vlm_media_instance_t *p_mi; int result = -1; - p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, - i_instance, p_exception ); + p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, i_instance ); if( p_mi ) { result = p_mi->i_time; @@ -687,14 +683,12 @@ int libvlc_vlm_get_media_instance_time( libvlc_instance_t *p_instance, int libvlc_vlm_get_media_instance_length( libvlc_instance_t *p_instance, const char *psz_name, - int i_instance, - libvlc_exception_t *p_exception ) + int i_instance ) { vlm_media_instance_t *p_mi; int result = -1; - p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, - i_instance, p_exception ); + p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, i_instance ); if( p_mi ) { result = p_mi->i_length; @@ -704,14 +698,12 @@ int libvlc_vlm_get_media_instance_length( libvlc_instance_t *p_instance, } int libvlc_vlm_get_media_instance_rate( libvlc_instance_t *p_instance, - const char *psz_name, int i_instance, - libvlc_exception_t *p_exception ) + const char *psz_name, int i_instance ) { vlm_media_instance_t *p_mi; int result = -1; - p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, - i_instance, p_exception ); + p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, i_instance ); if( p_mi ) { result = p_mi->i_rate; @@ -720,14 +712,13 @@ int libvlc_vlm_get_media_instance_rate( libvlc_instance_t *p_instance, return result; } +#if 0 int libvlc_vlm_get_media_instance_title( libvlc_instance_t *p_instance, - const char *psz_name, int i_instance, - libvlc_exception_t *p_exception ) + const char *psz_name, int i_instance ) { vlm_media_instance_t *p_mi; - p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, - i_instance, p_exception ); + p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, i_instance ); if( p_mi ) vlm_media_instance_Delete( p_mi ); return p_mi ? 0 : -1; @@ -735,13 +726,12 @@ int libvlc_vlm_get_media_instance_title( libvlc_instance_t *p_instance, int libvlc_vlm_get_media_instance_chapter( libvlc_instance_t *p_instance, const char *psz_name, - int i_instance, - libvlc_exception_t *p_exception ) + int i_instance ) { vlm_media_instance_t *p_mi; p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, - i_instance, p_exception ); + i_instance ); if( p_mi ) vlm_media_instance_Delete( p_mi ); return p_mi ? 0 : -1; @@ -749,20 +739,19 @@ int libvlc_vlm_get_media_instance_chapter( libvlc_instance_t *p_instance, int libvlc_vlm_get_media_instance_seekable( libvlc_instance_t *p_instance, const char *psz_name, - int i_instance, - libvlc_exception_t *p_exception ) + int i_instance ) { vlm_media_instance_t *p_mi; - p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, - i_instance, p_exception ); + p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, i_instance ); if( p_mi ) vlm_media_instance_Delete( p_mi ); return p_mi ? 0 : -1; } +#endif -libvlc_event_manager_t * libvlc_vlm_get_event_manager( libvlc_instance_t *p_instance, - libvlc_exception_t *p_exception ) +libvlc_event_manager_t * +libvlc_vlm_get_event_manager( libvlc_instance_t *p_instance ) { vlm_t *p_vlm; VLM_RET( p_vlm, NULL);