Commit c5746ee2 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Spell resource the English way

parent 195597f3
......@@ -308,8 +308,8 @@ SOURCES_libvlc_common = \
input/input_internal.h \
input/input_interface.h \
input/vlm_internal.h \
input/ressource.h \
input/ressource.c \
input/resource.h \
input/resource.c \
input/stream.c \
input/stream_demux.c \
input/stream_filter.c \
......
......@@ -32,7 +32,7 @@
#include "input_internal.h"
#include "event.h"
#include "ressource.h"
#include "resource.h"
static void UpdateBookmarksOption( input_thread_t * );
......@@ -415,7 +415,7 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
case INPUT_GET_AOUT:
{
aout_instance_t *p_aout = input_ressource_HoldAout( p_input->p->p_ressource );
aout_instance_t *p_aout = input_resource_HoldAout( p_input->p->p_resource );
if( !p_aout )
return VLC_EGENERIC;
......@@ -429,7 +429,7 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
vout_thread_t ***ppp_vout = (vout_thread_t***)va_arg( args, vout_thread_t*** );
int *pi_vout = (int*)va_arg( args, int* );
input_ressource_HoldVouts( p_input->p->p_ressource, ppp_vout, pi_vout );
input_resource_HoldVouts( p_input->p->p_resource, ppp_vout, pi_vout );
if( *pi_vout <= 0 )
return VLC_EGENERIC;
return VLC_SUCCESS;
......
......@@ -48,7 +48,7 @@
#include "clock.h"
#include "decoder.h"
#include "event.h"
#include "ressource.h"
#include "resource.h"
#include "../video_output/vout_control.h"
......@@ -1887,7 +1887,7 @@ static void DecoderProcessSpu( decoder_t *p_dec, block_t *p_block, bool b_flush
stats_UpdateInteger( p_dec, p_input->p->counters.p_decoded_sub, 1, NULL );
vlc_mutex_unlock( &p_input->p->counters.counters_lock );
p_vout = input_ressource_HoldVout( p_input->p->p_ressource );
p_vout = input_resource_HoldVout( p_input->p->p_resource );
if( p_vout && p_owner->p_spu_vout == p_vout )
{
/* Preroll does not work very well with subtitle */
......@@ -1912,7 +1912,7 @@ static void DecoderProcessSpu( decoder_t *p_dec, block_t *p_block, bool b_flush
if( b_flush && p_owner->p_spu_vout )
{
p_vout = input_ressource_HoldVout( p_input->p->p_ressource );
p_vout = input_resource_HoldVout( p_input->p->p_resource );
if( p_vout && p_owner->p_spu_vout == p_vout )
spu_Control( p_vout->p_spu, SPU_CHANNEL_CLEAR,
......@@ -2041,7 +2041,7 @@ static void DeleteDecoder( decoder_t * p_dec )
aout_DecDelete( p_owner->p_aout, p_owner->p_aout_input );
if( p_owner->p_aout )
{
input_ressource_RequestAout( p_owner->p_input->p->p_ressource,
input_resource_RequestAout( p_owner->p_input->p->p_resource,
p_owner->p_aout );
input_SendEventAout( p_owner->p_input );
p_owner->p_aout = NULL;
......@@ -2055,7 +2055,7 @@ static void DeleteDecoder( decoder_t * p_dec )
vout_ChangePause( p_owner->p_vout, false, mdate() );
/* */
input_ressource_RequestVout( p_owner->p_input->p->p_ressource, p_owner->p_vout, NULL, true );
input_resource_RequestVout( p_owner->p_input->p->p_resource, p_owner->p_vout, NULL, true );
input_SendEventVout( p_owner->p_input );
}
......@@ -2071,7 +2071,7 @@ static void DeleteDecoder( decoder_t * p_dec )
{
vout_thread_t *p_vout;
p_vout = input_ressource_HoldVout( p_owner->p_input->p->p_ressource );
p_vout = input_resource_HoldVout( p_owner->p_input->p->p_resource );
if( p_vout )
{
if( p_owner->p_spu_vout == p_vout )
......@@ -2135,7 +2135,7 @@ static vout_thread_t *aout_request_vout( void *p_private,
decoder_t *p_dec = p_private;
input_thread_t *p_input = p_dec->p_owner->p_input;
p_vout = input_ressource_RequestVout( p_input->p->p_ressource, p_vout, p_fmt, b_recyle );
p_vout = input_resource_RequestVout( p_input->p->p_resource, p_vout, p_fmt, b_recyle );
input_SendEventVout( p_input );
return p_vout;
......@@ -2199,7 +2199,7 @@ static aout_buffer_t *aout_new_buffer( decoder_t *p_dec, int i_samples )
p_aout = p_owner->p_aout;
if( !p_aout )
p_aout = input_ressource_RequestAout( p_owner->p_input->p->p_ressource, NULL );
p_aout = input_resource_RequestAout( p_owner->p_input->p->p_resource, NULL );
p_aout_input = aout_DecNew( p_dec, &p_aout,
&format, &p_dec->fmt_out.audio_replay_gain, &request_vout );
......@@ -2313,7 +2313,7 @@ static picture_t *vout_new_buffer( decoder_t *p_dec )
p_owner->p_vout = NULL;
vlc_mutex_unlock( &p_owner->lock );
p_vout = input_ressource_RequestVout( p_owner->p_input->p->p_ressource,
p_vout = input_resource_RequestVout( p_owner->p_input->p->p_resource,
p_vout, &p_dec->fmt_out.video, true );
vlc_mutex_lock( &p_owner->lock );
......@@ -2401,7 +2401,7 @@ static subpicture_t *spu_new_buffer( decoder_t *p_dec )
if( p_dec->b_die || p_dec->b_error )
break;
p_vout = input_ressource_HoldVout( p_owner->p_input->p->p_ressource );
p_vout = input_resource_HoldVout( p_owner->p_input->p->p_resource );
if( p_vout )
break;
......@@ -2446,7 +2446,7 @@ static void spu_del_buffer( decoder_t *p_dec, subpicture_t *p_subpic )
decoder_owner_sys_t *p_owner = p_dec->p_owner;
vout_thread_t *p_vout = NULL;
p_vout = input_ressource_HoldVout( p_owner->p_input->p->p_ressource );
p_vout = input_resource_HoldVout( p_owner->p_input->p->p_resource );
if( !p_vout || p_owner->p_spu_vout != p_vout )
{
if( p_vout )
......
......@@ -670,7 +670,7 @@ static void EsOutDecodersStopBuffering( es_out_t *out, bool b_forced )
(int)(mdate() - i_decoder_buffering_start)/1000 );
/* Here is a good place to destroy unused vout with every demuxer */
input_ressource_TerminateVout( p_sys->p_input->p->p_ressource );
input_resource_TerminateVout( p_sys->p_input->p->p_resource );
/* */
const mtime_t i_wakeup_delay = 10*1000; /* FIXME CLEANUP thread wake up time*/
......@@ -2040,7 +2040,7 @@ static int EsOutControlLocked( es_out_t *out, int i_query, va_list args )
break;
}
if( i >= p_sys->i_es )
input_ressource_TerminateVout( p_sys->p_input->p->p_ressource );
input_resource_TerminateVout( p_sys->p_input->p->p_resource );
}
p_sys->b_active = b;
return VLC_SUCCESS;
......@@ -2317,7 +2317,7 @@ static int EsOutControlLocked( es_out_t *out, int i_query, va_list args )
/* Clean up vout after user action (in active mode only).
* FIXME it does not work well with multiple video windows */
if( p_sys->b_active )
input_ressource_TerminateVout( p_sys->p_input->p->p_ressource );
input_resource_TerminateVout( p_sys->p_input->p->p_resource );
return i_ret;
}
......
......@@ -43,7 +43,7 @@
#include "demux.h"
#include "stream.h"
#include "item.h"
#include "ressource.h"
#include "resource.h"
#include <vlc_sout.h>
#include "../stream_output/stream_output.h"
......@@ -66,7 +66,7 @@ static void *Run ( vlc_object_t *p_this );
static void *RunAndDestroy ( vlc_object_t *p_this );
static input_thread_t * Create ( vlc_object_t *, input_item_t *,
const char *, bool, input_ressource_t * );
const char *, bool, input_resource_t * );
static int Init ( input_thread_t *p_input );
static void End ( input_thread_t *p_input );
static void MainLoop( input_thread_t *p_input );
......@@ -117,7 +117,7 @@ static void input_ChangeState( input_thread_t *p_input, int i_state ); /* TODO f
*****************************************************************************/
static input_thread_t *Create( vlc_object_t *p_parent, input_item_t *p_item,
const char *psz_header, bool b_quick,
input_ressource_t *p_ressource )
input_resource_t *p_resource )
{
static const char input_name[] = "input";
input_thread_t *p_input = NULL; /* thread descriptor */
......@@ -200,11 +200,11 @@ static input_thread_t *Create( vlc_object_t *p_parent, input_item_t *p_item,
p_input->p->slave = NULL;
/* */
if( p_ressource )
p_input->p->p_ressource = p_ressource;
if( p_resource )
p_input->p->p_resource = p_resource;
else
p_input->p->p_ressource = input_ressource_New();
input_ressource_SetInput( p_input->p->p_ressource, p_input );
p_input->p->p_resource = input_resource_New();
input_resource_SetInput( p_input->p->p_resource, p_input );
/* Init control buffer */
vlc_mutex_init( &p_input->p->lock_control );
......@@ -311,8 +311,8 @@ static void Destructor( input_thread_t * p_input )
stats_TimerDump( p_input, STATS_TIMER_INPUT_LAUNCHING );
stats_TimerClean( p_input, STATS_TIMER_INPUT_LAUNCHING );
if( p_input->p->p_ressource )
input_ressource_Delete( p_input->p->p_ressource );
if( p_input->p->p_resource )
input_resource_Delete( p_input->p->p_resource );
vlc_gc_decref( p_input->p->p_item );
......@@ -340,11 +340,11 @@ input_thread_t *__input_CreateThread( vlc_object_t *p_parent,
/* */
input_thread_t *__input_CreateThreadExtended( vlc_object_t *p_parent,
input_item_t *p_item,
const char *psz_log, input_ressource_t *p_ressource )
const char *psz_log, input_resource_t *p_resource )
{
input_thread_t *p_input;
p_input = Create( p_parent, p_item, psz_log, false, p_ressource );
p_input = Create( p_parent, p_item, psz_log, false, p_resource );
if( !p_input )
return NULL;
......@@ -440,17 +440,17 @@ void input_StopThread( input_thread_t *p_input )
input_ControlPush( p_input, INPUT_CONTROL_SET_DIE, NULL );
}
input_ressource_t *input_DetachRessource( input_thread_t *p_input )
input_resource_t *input_DetachRessource( input_thread_t *p_input )
{
assert( p_input->b_dead );
input_ressource_t *p_ressource = p_input->p->p_ressource;
input_ressource_SetInput( p_ressource, NULL );
input_resource_t *p_resource = p_input->p->p_resource;
input_resource_SetInput( p_resource, NULL );
p_input->p->p_ressource = NULL;
p_input->p->p_resource = NULL;
p_input->p->p_sout = NULL;
return p_ressource;
return p_resource;
}
/**
......@@ -829,7 +829,7 @@ static int InitSout( input_thread_t * p_input )
char *psz = var_GetNonEmptyString( p_input, "sout" );
if( psz && strncasecmp( p_input->p->p_item->psz_uri, "vlc:", 4 ) )
{
p_input->p->p_sout = input_ressource_RequestSout( p_input->p->p_ressource, NULL, psz );
p_input->p->p_sout = input_resource_RequestSout( p_input->p->p_resource, NULL, psz );
if( !p_input->p->p_sout )
{
input_ChangeState( p_input, ERROR_S );
......@@ -850,7 +850,7 @@ static int InitSout( input_thread_t * p_input )
}
else
{
input_ressource_RequestSout( p_input->p->p_ressource, NULL, NULL );
input_resource_RequestSout( p_input->p->p_resource, NULL, NULL );
}
free( psz );
......@@ -1215,12 +1215,12 @@ error:
es_out_Delete( p_input->p->p_es_out );
if( p_input->p->p_es_out_display )
es_out_Delete( p_input->p->p_es_out_display );
if( p_input->p->p_ressource )
if( p_input->p->p_resource )
{
if( p_input->p->p_sout )
input_ressource_RequestSout( p_input->p->p_ressource,
input_resource_RequestSout( p_input->p->p_resource,
p_input->p->p_sout, NULL );
input_ressource_SetInput( p_input->p->p_ressource, NULL );
input_resource_SetInput( p_input->p->p_resource, NULL );
}
#ifdef ENABLE_SOUT
......@@ -1339,9 +1339,9 @@ static void End( input_thread_t * p_input )
}
/* */
input_ressource_RequestSout( p_input->p->p_ressource,
input_resource_RequestSout( p_input->p->p_resource,
p_input->p->p_sout, NULL );
input_ressource_SetInput( p_input->p->p_ressource, NULL );
input_resource_SetInput( p_input->p->p_resource, NULL );
}
/*****************************************************************************
......
......@@ -45,44 +45,44 @@ int input_Preparse( vlc_object_t *, input_item_t * );
input_stats_t *stats_NewInputStats( input_thread_t *p_input );
/**
* This defines an opaque input ressource handler.
* This defines an opaque input resource handler.
*/
typedef struct input_ressource_t input_ressource_t;
typedef struct input_resource_t input_resource_t;
/**
* This function releases an input_ressource_t and all associated ressources.
* This function releases an input_resource_t and all associated resources.
*/
void input_ressource_Delete( input_ressource_t * );
void input_resource_Delete( input_resource_t * );
/**
* This function deletes the current sout in the ressources.
* This function deletes the current sout in the resources.
*/
void input_ressource_TerminateSout( input_ressource_t *p_ressource );
void input_resource_TerminateSout( input_resource_t *p_resource );
/**
* This function deletes the current vout in the ressources.
* This function deletes the current vout in the resources.
*/
void input_ressource_TerminateVout( input_ressource_t *p_ressource );
void input_resource_TerminateVout( input_resource_t *p_resource );
/**
* This function return true if there is at least one vout in the ressources.
* This function return true if there is at least one vout in the resources.
*
* It can only be called on detached ressources.
* It can only be called on detached resources.
*/
bool input_ressource_HasVout( input_ressource_t *p_ressource );
bool input_resource_HasVout( input_resource_t *p_resource );
/* input.c */
#define input_CreateThreadExtended(a,b,c,d) __input_CreateThreadExtended(VLC_OBJECT(a),b,c,d)
input_thread_t *__input_CreateThreadExtended ( vlc_object_t *, input_item_t *, const char *, input_ressource_t * );
input_thread_t *__input_CreateThreadExtended ( vlc_object_t *, input_item_t *, const char *, input_resource_t * );
/**
* This function detaches ressources from a dead input.
* This function detaches resources from a dead input.
*
* It MUST be called on a dead input (p_input->b_dead true) otherwise
* it will assert.
* It does not support concurrent calls.
*/
input_ressource_t *input_DetachRessource( input_thread_t * );
input_resource_t *input_DetachRessource( input_thread_t * );
/* */
typedef enum
......
......@@ -130,7 +130,7 @@ struct input_thread_private_t
input_source_t **slave;
/* Ressources */
input_ressource_t *p_ressource;
input_resource_t *p_resource;
/* Stats counters */
struct {
......
/*****************************************************************************
* ressource.c
* resource.c
*****************************************************************************
* Copyright (C) 2008 Laurent Aimar
* $Id$
......@@ -38,9 +38,9 @@
#include "../audio_output/aout_internal.h"
#include "../video_output/vout_control.h"
#include "input_interface.h"
#include "ressource.h"
#include "resource.h"
struct input_ressource_t
struct input_resource_t
{
/* This lock is used to serialize request and protect
* our variables */
......@@ -53,7 +53,7 @@ struct input_ressource_t
vout_thread_t *p_vout_free;
aout_instance_t *p_aout;
/* This lock is used to protect vout ressources access (for hold)
/* This lock is used to protect vout resources access (for hold)
* It is a special case because of embed video (possible deadlock
* between vout window request and vout holds in some(qt4) interface) */
vlc_mutex_t lock_vout;
......@@ -62,61 +62,61 @@ struct input_ressource_t
};
/* */
static void DestroySout( input_ressource_t *p_ressource )
static void DestroySout( input_resource_t *p_resource )
{
#ifdef ENABLE_SOUT
if( p_ressource->p_sout )
sout_DeleteInstance( p_ressource->p_sout );
if( p_resource->p_sout )
sout_DeleteInstance( p_resource->p_sout );
#endif
p_ressource->p_sout = NULL;
p_resource->p_sout = NULL;
}
static sout_instance_t *RequestSout( input_ressource_t *p_ressource,
static sout_instance_t *RequestSout( input_resource_t *p_resource,
sout_instance_t *p_sout, const char *psz_sout )
{
#ifdef ENABLE_SOUT
if( !p_sout && !psz_sout )
{
if( p_ressource->p_sout )
msg_Dbg( p_ressource->p_sout, "destroying useless sout" );
DestroySout( p_ressource );
if( p_resource->p_sout )
msg_Dbg( p_resource->p_sout, "destroying useless sout" );
DestroySout( p_resource );
return NULL;
}
assert( p_ressource->p_input );
assert( !p_sout || ( !p_ressource->p_sout && !psz_sout ) );
assert( p_resource->p_input );
assert( !p_sout || ( !p_resource->p_sout && !psz_sout ) );
/* Check the validity of the sout */
if( p_ressource->p_sout &&
strcmp( p_ressource->p_sout->psz_sout, psz_sout ) )
if( p_resource->p_sout &&
strcmp( p_resource->p_sout->psz_sout, psz_sout ) )
{
msg_Dbg( p_ressource->p_input, "destroying unusable sout" );
DestroySout( p_ressource );
msg_Dbg( p_resource->p_input, "destroying unusable sout" );
DestroySout( p_resource );
}
if( psz_sout )
{
if( p_ressource->p_sout )
if( p_resource->p_sout )
{
/* Reuse it */
msg_Dbg( p_ressource->p_input, "reusing sout" );
msg_Dbg( p_ressource->p_input, "you probably want to use gather stream_out" );
vlc_object_attach( p_ressource->p_sout, p_ressource->p_input );
msg_Dbg( p_resource->p_input, "reusing sout" );
msg_Dbg( p_resource->p_input, "you probably want to use gather stream_out" );
vlc_object_attach( p_resource->p_sout, p_resource->p_input );
}
else
{
/* Create a new one */
p_ressource->p_sout = sout_NewInstance( p_ressource->p_input, psz_sout );
p_resource->p_sout = sout_NewInstance( p_resource->p_input, psz_sout );
}
p_sout = p_ressource->p_sout;
p_ressource->p_sout = NULL;
p_sout = p_resource->p_sout;
p_resource->p_sout = NULL;
return p_sout;
}
else
{
vlc_object_detach( p_sout );
p_ressource->p_sout = p_sout;
p_resource->p_sout = p_sout;
return NULL;
}
......@@ -126,23 +126,23 @@ static sout_instance_t *RequestSout( input_ressource_t *p_ressource,
}
/* */
static void DestroyVout( input_ressource_t *p_ressource )
static void DestroyVout( input_resource_t *p_resource )
{
assert( p_ressource->i_vout == 0 );
assert( p_resource->i_vout == 0 );
if( p_ressource->p_vout_free )
vout_CloseAndRelease( p_ressource->p_vout_free );
if( p_resource->p_vout_free )
vout_CloseAndRelease( p_resource->p_vout_free );
p_ressource->p_vout_free = NULL;
p_resource->p_vout_free = NULL;
}
static void DisplayVoutTitle( input_ressource_t *p_ressource,
static void DisplayVoutTitle( input_resource_t *p_resource,
vout_thread_t *p_vout )
{
assert( p_ressource->p_input );
assert( p_resource->p_input );
/* TODO display the title only one time for the same input ? */
input_item_t *p_item = input_GetItem( p_ressource->p_input );
input_item_t *p_item = input_GetItem( p_resource->p_input );
char *psz_nowplaying = input_item_GetNowPlaying( p_item );
if( psz_nowplaying && *psz_nowplaying )
......@@ -177,51 +177,51 @@ static void DisplayVoutTitle( input_ressource_t *p_ressource,
}
free( psz_nowplaying );
}
static vout_thread_t *RequestVout( input_ressource_t *p_ressource,
static vout_thread_t *RequestVout( input_resource_t *p_resource,
vout_thread_t *p_vout, video_format_t *p_fmt,
bool b_recycle )
{
if( !p_vout && !p_fmt )
{
if( p_ressource->p_vout_free )
if( p_resource->p_vout_free )
{
msg_Dbg( p_ressource->p_vout_free, "destroying useless vout" );
vout_CloseAndRelease( p_ressource->p_vout_free );
p_ressource->p_vout_free = NULL;
msg_Dbg( p_resource->p_vout_free, "destroying useless vout" );
vout_CloseAndRelease( p_resource->p_vout_free );
p_resource->p_vout_free = NULL;
}
return NULL;
}
assert( p_ressource->p_input );
assert( p_resource->p_input );
if( p_fmt )
{
/* */
if( !p_vout && p_ressource->p_vout_free )
if( !p_vout && p_resource->p_vout_free )
{
msg_Dbg( p_ressource->p_input, "trying to reuse free vout" );
p_vout = p_ressource->p_vout_free;
msg_Dbg( p_resource->p_input, "trying to reuse free vout" );
p_vout = p_resource->p_vout_free;
p_ressource->p_vout_free = NULL;
p_resource->p_vout_free = NULL;
}
else if( p_vout )
{
assert( p_vout != p_ressource->p_vout_free );
assert( p_vout != p_resource->p_vout_free );
vlc_mutex_lock( &p_ressource->lock_vout );
TAB_REMOVE( p_ressource->i_vout, p_ressource->pp_vout, p_vout );
vlc_mutex_unlock( &p_ressource->lock_vout );
vlc_mutex_lock( &p_resource->lock_vout );
TAB_REMOVE( p_resource->i_vout, p_resource->pp_vout, p_vout );
vlc_mutex_unlock( &p_resource->lock_vout );
}
/* */
p_vout = vout_Request( p_ressource->p_input, p_vout, p_fmt );
p_vout = vout_Request( p_resource->p_input, p_vout, p_fmt );
if( !p_vout )
return NULL;
DisplayVoutTitle( p_ressource, p_vout );
DisplayVoutTitle( p_resource, p_vout );
vlc_mutex_lock( &p_ressource->lock_vout );
TAB_APPEND( p_ressource->i_vout, p_ressource->pp_vout, p_vout );
vlc_mutex_unlock( &p_ressource->lock_vout );
vlc_mutex_lock( &p_resource->lock_vout );
TAB_APPEND( p_resource->i_vout, p_resource->pp_vout, p_vout );
vlc_mutex_unlock( &p_resource->lock_vout );
return p_vout;
}
......@@ -229,117 +229,117 @@ static vout_thread_t *RequestVout( input_ressource_t *p_ressource,
{
assert( p_vout );
vlc_mutex_lock( &p_ressource->lock_vout );
TAB_REMOVE( p_ressource->i_vout, p_ressource->pp_vout, p_vout );
const int i_vout_active = p_ressource->i_vout;
vlc_mutex_unlock( &p_ressource->lock_vout );
vlc_mutex_lock( &p_resource->lock_vout );
TAB_REMOVE( p_resource->i_vout, p_resource->pp_vout, p_vout );
const int i_vout_active = p_resource->i_vout;
vlc_mutex_unlock( &p_resource->lock_vout );
if( p_ressource->p_vout_free || i_vout_active > 0 || !b_recycle )
if( p_resource->p_vout_free || i_vout_active > 0 || !b_recycle )
{
if( b_recycle )
msg_Dbg( p_ressource->p_input, "detroying vout (already one saved or active)" );
msg_Dbg( p_resource->p_input, "detroying vout (already one saved or active)" );
vout_CloseAndRelease( p_vout );
}
else
{
msg_Dbg( p_ressource->p_input, "saving a free vout" );
msg_Dbg( p_resource->p_input, "saving a free vout" );
vout_Flush( p_vout, 1 );
spu_Control( p_vout->p_spu, SPU_CHANNEL_CLEAR, -1 );
p_ressource->p_vout_free = p_vout;
p_resource->p_vout_free = p_vout;
}
return NULL;
}
}
static vout_thread_t *HoldVout( input_ressource_t *p_ressource )
static vout_thread_t *HoldVout( input_resource_t *p_resource )
{
if( p_ressource->i_vout <= 0 )
if( p_resource->i_vout <= 0 )
return NULL;
/* TODO FIXME: p_ressource->pp_vout order is NOT stable */
vlc_mutex_lock( &p_ressource->lock_vout );
/* TODO FIXME: p_resource->pp_vout order is NOT stable */
vlc_mutex_lock( &p_resource->lock_vout );
vout_thread_t *p_vout = p_ressource->pp_vout[0];
vout_thread_t *p_vout = p_resource->pp_vout[0];
vlc_object_hold( p_vout );
vlc_mutex_unlock( &p_ressource->lock_vout );
vlc_mutex_unlock( &p_resource->lock_vout );
return p_vout;
}
static void HoldVouts( input_ressource_t *p_ressource, vout_thread_t ***ppp_vout, int *pi_vout )
static void HoldVouts( input_resource_t *p_resource, vout_thread_t ***ppp_vout, int *pi_vout )
{
vout_thread_t **pp_vout;
*pi_vout = 0;
*ppp_vout = NULL;
vlc_mutex_lock( &p_ressource->lock_vout );
vlc_mutex_lock( &p_resource->lock_vout );
if( p_ressource->i_vout <= 0 )
if( p_resource->i_vout <= 0 )
goto exit;
pp_vout = calloc( p_ressource->i_vout, sizeof(*pp_vout) );
pp_vout = calloc( p_resource->i_vout, sizeof(*pp_vout) );
if( !pp_vout )
goto exit;
*ppp_vout = pp_vout;
*pi_vout = p_ressource->i_vout;
*pi_vout = p_resource->i_vout;
for( int i = 0; i < p_ressource->i_vout; i++ )
for( int i = 0; i < p_resource->i_vout; i++ )
{
pp_vout[i] = p_ressource->pp_vout[i];
pp_vout[i] = p_resource->pp_vout[i];
vlc_object_hold( pp_vout[i] );
}
exit:
vlc_mutex_unlock( &p_ressource->lock_vout );
vlc_mutex_unlock( &p_resource->lock_vout );
}
/* */
static void DestroyAout( input_ressource_t *p_ressource )
static void DestroyAout( input_resource_t *p_resource )
{
if( p_ressource->p_aout )
vlc_object_release( p_ressource->p_aout );
p_ressource->p_aout = NULL;
if( p_resource->p_aout )
vlc_object_release( p_resource->p_aout );