#define register_event(a, b) __register_event(a, libvlc_MediaPlayer ## b)
static inline void __register_event(libvlc_media_player_t *mp, libvlc_event_type_t type)
{
- libvlc_event_manager_register_event_type(mp->p_event_manager, type, NULL);
+ libvlc_event_manager_register_event_type(mp->p_event_manager, type);
}
static inline void lock(libvlc_media_player_t *mp)
// Also set the state of the corresponding media
// This is strictly for convenience.
libvlc_media_set_state(media, state);
-
- libvlc_media_release(media);
+
+ libvlc_media_release(media);
}
}
default:
return VLC_SUCCESS;
}
-
+
set_state( p_mi, libvlc_state, false );
libvlc_event_send( p_mi->p_event_manager, &event );
}
mp->p_input_thread = NULL;
mp->p_input_resource = NULL;
mp->i_refcount = 1;
- vlc_mutex_init(&mp->object_lock);
- mp->p_event_manager = libvlc_event_manager_new(mp, instance, e);
- if (libvlc_exception_raised(e))
+ mp->p_event_manager = libvlc_event_manager_new(mp, instance);
+ if (unlikely(mp->p_event_manager == NULL))
{
- vlc_mutex_destroy(&mp->object_lock);
free(mp);
return NULL;
}
+ vlc_mutex_init(&mp->object_lock);
register_event(mp, NothingSpecial);
register_event(mp, Opening);
if( p_mi->p_input_resource )
{
input_resource_Delete( p_mi->p_input_resource );
- p_mi->p_input_resource = NULL;
+ p_mi->p_input_resource = NULL;
}
libvlc_event_manager_release( p_mi->p_event_manager );
**************************************************************************/
void libvlc_media_player_set_media(
libvlc_media_player_t *p_mi,
- libvlc_media_t *p_md,
- libvlc_exception_t *p_e )
+ libvlc_media_t *p_md )
{
- VLC_UNUSED(p_e);
-
lock(p_mi);
/* FIXME I am not sure if it is a user request or on die(eof/error)
event.type = libvlc_MediaPlayerMediaChanged;
event.u.media_player_media_changed.new_media = p_md;
libvlc_event_send( p_mi->p_event_manager, &event );
-
+
}
/**************************************************************************
* Get the Media descriptor associated with the instance.
**************************************************************************/
libvlc_media_t *
-libvlc_media_player_get_media(
- libvlc_media_player_t *p_mi,
- libvlc_exception_t *p_e )
+libvlc_media_player_get_media( libvlc_media_player_t *p_mi )
{
libvlc_media_t *p_m;
- VLC_UNUSED(p_e);
lock(p_mi);
p_m = p_mi->p_md;
* Get the event Manager.
**************************************************************************/
libvlc_event_manager_t *
-libvlc_media_player_event_manager(
- libvlc_media_player_t *p_mi,
- libvlc_exception_t *p_e )
+libvlc_media_player_event_manager( libvlc_media_player_t *p_mi )
{
- VLC_UNUSED(p_e);
-
return p_mi->p_event_manager;
}
if( !p_input_thread )
return;
- libvlc_state_t state = libvlc_media_player_get_state( p_mi, p_e );
+ libvlc_state_t state = libvlc_media_player_get_state( p_mi );
if( state == libvlc_Playing || state == libvlc_Buffering )
{
if( libvlc_media_player_can_pause( p_mi, p_e ) )
input_Control( p_input_thread, INPUT_SET_STATE, PAUSE_S );
else
- libvlc_media_player_stop( p_mi, p_e );
+ libvlc_media_player_stop( p_mi );
}
else
input_Control( p_input_thread, INPUT_SET_STATE, PLAYING_S );
*
* Enter with lock held.
**************************************************************************/
-int libvlc_media_player_is_playing( libvlc_media_player_t *p_mi,
- libvlc_exception_t *p_e )
+int libvlc_media_player_is_playing( libvlc_media_player_t *p_mi )
{
- libvlc_state_t state = libvlc_media_player_get_state( p_mi, p_e );
+ libvlc_state_t state = libvlc_media_player_get_state( p_mi );
return (libvlc_Playing == state) || (libvlc_Buffering == state);
}
/**************************************************************************
* Stop playing.
**************************************************************************/
-void libvlc_media_player_stop( libvlc_media_player_t *p_mi,
- libvlc_exception_t *p_e )
+void libvlc_media_player_stop( libvlc_media_player_t *p_mi )
{
- libvlc_state_t state = libvlc_media_player_get_state( p_mi, p_e );
+ libvlc_state_t state = libvlc_media_player_get_state( p_mi );
lock(p_mi);
release_input_thread( p_mi, true ); /* This will stop the input thread */
* set_nsobject
**************************************************************************/
void libvlc_media_player_set_nsobject( libvlc_media_player_t *p_mi,
- void * drawable,
- libvlc_exception_t *p_e )
+ void * drawable )
{
- (void) p_e;
p_mi->drawable.nsobject = drawable;
}
* set_agl
**************************************************************************/
void libvlc_media_player_set_agl( libvlc_media_player_t *p_mi,
- uint32_t drawable,
- libvlc_exception_t *p_e )
+ uint32_t drawable )
{
- (void) p_e;
p_mi->drawable.agl = drawable;
}
* set_xwindow
**************************************************************************/
void libvlc_media_player_set_xwindow( libvlc_media_player_t *p_mi,
- uint32_t drawable,
- libvlc_exception_t *p_e )
+ uint32_t drawable )
{
- (void) p_e;
p_mi->drawable.xid = drawable;
}
* set_hwnd
**************************************************************************/
void libvlc_media_player_set_hwnd( libvlc_media_player_t *p_mi,
- void *drawable,
- libvlc_exception_t *p_e )
+ void *drawable )
{
- (void) p_e;
p_mi->drawable.hwnd = drawable;
}
return f_rate;
}
-libvlc_state_t libvlc_media_player_get_state( libvlc_media_player_t *p_mi, libvlc_exception_t *p_e )
+libvlc_state_t libvlc_media_player_get_state( libvlc_media_player_t *p_mi )
{
- VLC_UNUSED(p_e);
lock(p_mi);
libvlc_state_t state = p_mi->state;
unlock(p_mi);
libvlc_printerr( "No active input" );
}
}
+
+/**************************************************************************
+ * get_input_thread (Public API version)
+ **************************************************************************/
+struct input_thread_t *libvlc_media_player_get_input_thread( libvlc_media_player_t *player )
+{
+ libvlc_exception_t e;
+ libvlc_exception_init(&e);
+ input_thread_t *input = libvlc_get_input_thread(player, &e);
+ clear_if_needed(&e);
+ return input;
+}