Make media player a VLC object

This will make variable inheritance to child inputs much simpler
This commit is contained in:
Rémi Denis-Courmont 2010-01-31 18:45:12 +02:00
parent 26af1ac094
commit e49d07aa51
2 changed files with 12 additions and 10 deletions

View File

@ -343,13 +343,13 @@ libvlc_media_player_new( libvlc_instance_t *instance, libvlc_exception_t *e )
assert(instance);
mp = malloc(sizeof(libvlc_media_player_t));
if (!mp)
mp = vlc_object_create (instance->p_libvlc_int, sizeof(*mp));
if (unlikely(mp == NULL))
{
libvlc_exception_raise(e);
libvlc_printerr("Not enough memory");
return NULL;
}
vlc_object_attach (mp, mp->p_libvlc);
mp->p_md = NULL;
mp->drawable.agl = 0;
mp->drawable.xid = 0;
@ -364,7 +364,7 @@ libvlc_media_player_new( libvlc_instance_t *instance, libvlc_exception_t *e )
mp->p_event_manager = libvlc_event_manager_new(mp, instance);
if (unlikely(mp->p_event_manager == NULL))
{
free(mp);
vlc_object_release(mp);
return NULL;
}
vlc_mutex_init(&mp->object_lock);
@ -399,7 +399,7 @@ libvlc_media_player_new( libvlc_instance_t *instance, libvlc_exception_t *e )
* FIXME: It's unclear why we want to put this in public API, and why we
* want to expose it in such a limiting and ugly way.
*/
var_AddCallback(instance->p_libvlc_int, "snapshot-file", snapshot_was_taken, mp);
var_AddCallback(mp->p_libvlc, "snapshot-file", snapshot_was_taken, mp);
return mp;
}
@ -434,7 +434,7 @@ static void libvlc_media_player_destroy( libvlc_media_player_t *p_mi )
assert( p_mi );
/* Detach Callback from the main libvlc object */
var_DelCallback( p_mi->p_libvlc_instance->p_libvlc_int,
var_DelCallback( p_mi->p_libvlc,
"snapshot-file", snapshot_was_taken, p_mi );
/* If the input thread hasn't been already deleted it means
@ -454,7 +454,7 @@ static void libvlc_media_player_destroy( libvlc_media_player_t *p_mi )
libvlc_event_manager_release( p_mi->p_event_manager );
libvlc_media_release( p_mi->p_md );
vlc_mutex_destroy( &p_mi->object_lock );
free( p_mi );
vlc_object_release( p_mi );
}
/**************************************************************************
@ -589,9 +589,9 @@ void libvlc_media_player_play( libvlc_media_player_t *p_mi,
return;
}
p_mi->p_input_thread = input_Create( p_mi->p_libvlc_instance->p_libvlc_int,
p_mi->p_md->p_input_item, NULL, p_mi->p_input_resource );
p_mi->p_input_thread = input_Create( p_mi,
p_mi->p_md->p_input_item, NULL,
p_mi->p_input_resource );
if( !p_mi->p_input_thread )
{
unlock(p_mi);

View File

@ -36,6 +36,8 @@
struct libvlc_media_player_t
{
VLC_COMMON_MEMBERS
int i_refcount;
vlc_mutex_t object_lock;
input_thread_t * p_input_thread;