[vlc-commits] commit: vlm: use a per-instance parent object to set VoD variables ( Pierre Ynard )
git at videolan.org
git at videolan.org
Fri Nov 26 09:25:09 CET 2010
vlc | branch: master | Pierre Ynard <linkfanel at yahoo.fr> | Fri Nov 26 09:23:12 2010 +0100| [8cb745bf8692b11507da6f9c054e1f4a1323b6bd] | committer: Pierre Ynard
vlm: use a per-instance parent object to set VoD variables
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8cb745bf8692b11507da6f9c054e1f4a1323b6bd
---
src/input/vlm.c | 28 +++++++++++++++++-----------
src/input/vlm_internal.h | 1 +
2 files changed, 18 insertions(+), 11 deletions(-)
diff --git a/src/input/vlm.c b/src/input/vlm.c
index 8bae04d..69f454c 100644
--- a/src/input/vlm.c
+++ b/src/input/vlm.c
@@ -876,6 +876,8 @@ static vlm_media_instance_sys_t *vlm_MediaInstanceNew( vlm_t *p_vlm, const char
p_instance->i_index = 0;
p_instance->b_sout_keep = false;
+ p_instance->p_parent = vlc_object_create( p_vlm, sizeof (vlc_object_t) );
+ vlc_object_attach( p_instance->p_parent, p_vlm->p_libvlc );
p_instance->p_input = NULL;
p_instance->p_input_resource = NULL;
@@ -899,6 +901,7 @@ static void vlm_MediaInstanceDelete( vlm_t *p_vlm, int64_t id, vlm_media_instanc
input_resource_Terminate( p_instance->p_input_resource );
input_resource_Release( p_instance->p_input_resource );
}
+ vlc_object_release( p_instance->p_parent );
TAB_REMOVE( p_media->i_instance, p_media->instance, p_instance );
vlc_gc_decref( p_instance->p_item );
@@ -934,6 +937,15 @@ static int vlm_ControlMediaInstanceStart( vlm_t *p_vlm, int64_t id, const char *
if( !p_instance )
return VLC_ENOMEM;
+ if ( p_cfg->b_vod )
+ {
+ var_Create( p_instance->p_parent, "vod-media", VLC_VAR_ADDRESS );
+ var_SetAddress( p_instance->p_parent, "vod-media",
+ p_media->vod.p_media );
+ var_Create( p_instance->p_parent, "vod-session", VLC_VAR_STRING );
+ var_SetString( p_instance->p_parent, "vod-session", psz_id );
+ }
+
if( p_cfg->psz_output != NULL || psz_vod_output != NULL )
{
char *psz_buffer;
@@ -994,21 +1006,15 @@ static int vlm_ControlMediaInstanceStart( vlm_t *p_vlm, int64_t id, const char *
if( asprintf( &psz_log, _("Media: %s"), p_media->cfg.psz_name ) != -1 )
{
- vlc_object_t *p_parent = p_media->cfg.b_vod ?
- VLC_OBJECT(p_vlm->p_vod) :
- VLC_OBJECT(p_vlm->p_libvlc);
if( !p_instance->p_input_resource )
- p_instance->p_input_resource = input_resource_New( VLC_OBJECT( p_vlm->p_libvlc ) );
- p_instance->p_input = input_Create( p_parent, p_instance->p_item,
- psz_log, p_instance->p_input_resource );
+ p_instance->p_input_resource = input_resource_New( p_instance->p_parent );
+
+ p_instance->p_input = input_Create( p_instance->p_parent,
+ p_instance->p_item, psz_log,
+ p_instance->p_input_resource );
if( p_instance->p_input )
{
var_AddCallback( p_instance->p_input, "intf-event", InputEvent, p_media );
- var_Create( p_instance->p_input, "vod-media", VLC_VAR_ADDRESS );
- var_SetAddress( p_instance->p_input, "vod-media",
- p_media->vod.p_media );
- var_Create( p_instance->p_input, "vod-session", VLC_VAR_STRING );
- var_SetString( p_instance->p_input, "vod-session", psz_id );
if( input_Start( p_instance->p_input ) != VLC_SUCCESS )
{
diff --git a/src/input/vlm_internal.h b/src/input/vlm_internal.h
index f4603ca..0ecfd37 100644
--- a/src/input/vlm_internal.h
+++ b/src/input/vlm_internal.h
@@ -38,6 +38,7 @@ typedef struct
bool b_sout_keep;
+ vlc_object_t *p_parent;
input_item_t *p_item;
input_thread_t *p_input;
input_resource_t *p_input_resource;
More information about the vlc-commits
mailing list