From 6f2c07b9f42c241fdc75456095dc29320aba4849 Mon Sep 17 00:00:00 2001 From: Gildas Bazin Date: Thu, 29 Apr 2004 13:53:29 +0000 Subject: [PATCH] * src/input/demux.c, src/misc/objects.c: demux2 has the VLC_OBJECT_DEMUX type. * src/input/input.c: input_StopThread() sets b_die on demux2 as well. --- include/vlc_objects.h | 15 ++++++++------- src/input/demux.c | 2 +- src/input/input.c | 13 +++++++++++++ src/misc/objects.c | 4 ++++ 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/include/vlc_objects.h b/include/vlc_objects.h index c83c1a2b26..bc48112f9f 100644 --- a/include/vlc_objects.h +++ b/include/vlc_objects.h @@ -41,14 +41,15 @@ #define VLC_OBJECT_INPUT (-7) #define VLC_OBJECT_DECODER (-8) #define VLC_OBJECT_VOUT (-9) -#define VLC_OBJECT_AOUT (-10) -#define VLC_OBJECT_SOUT (-11) -#define VLC_OBJECT_HTTPD (-12) +#define VLC_OBJECT_AOUT (-10) +#define VLC_OBJECT_SOUT (-11) +#define VLC_OBJECT_HTTPD (-12) #define VLC_OBJECT_PACKETIZER (-13) -#define VLC_OBJECT_ENCODER (-14) -#define VLC_OBJECT_DIALOGS (-15) -#define VLC_OBJECT_VLM (-16) -#define VLC_OBJECT_ANNOUNCE (-17) +#define VLC_OBJECT_ENCODER (-14) +#define VLC_OBJECT_DIALOGS (-15) +#define VLC_OBJECT_VLM (-16) +#define VLC_OBJECT_ANNOUNCE (-17) +#define VLC_OBJECT_DEMUX (-18) #define VLC_OBJECT_GENERIC (-666) diff --git a/src/input/demux.c b/src/input/demux.c index c3100409dc..3b103796f6 100644 --- a/src/input/demux.c +++ b/src/input/demux.c @@ -171,7 +171,7 @@ static void SeekOffset( input_thread_t *p_input, int64_t i_pos ) demux_t *__demux2_New( vlc_object_t *p_obj, char *psz_mrl, stream_t *s, es_out_t *out ) { - demux_t *p_demux = vlc_object_create( p_obj, sizeof( demux_t ) ); + demux_t *p_demux = vlc_object_create( p_obj, VLC_OBJECT_DEMUX ); char *psz_dup = strdup( psz_mrl ? psz_mrl : "" ); char *psz = strchr( psz_dup, ':' ); diff --git a/src/input/input.c b/src/input/input.c index ad40294c91..01fdc2f8be 100644 --- a/src/input/input.c +++ b/src/input/input.c @@ -340,9 +340,22 @@ input_thread_t *__input_CreateThread( vlc_object_t *p_parent, *****************************************************************************/ void input_StopThread( input_thread_t *p_input ) { + demux_t *p_demux; + /* Make the thread exit from a possible vlc_cond_wait() */ vlc_mutex_lock( &p_input->stream.stream_lock ); + /* Request thread destruction */ + + /* Temporary demux2 hack */ + p_demux = (demux_t *)vlc_object_find( p_input, VLC_OBJECT_DEMUX, + FIND_CHILD ); + if( p_demux ) + { + p_demux->b_die = 1; + vlc_object_release( p_demux ); + } + p_input->b_die = 1; vlc_cond_signal( &p_input->stream.stream_wait ); diff --git a/src/misc/objects.c b/src/misc/objects.c index 0f42de7ae9..4413a7d337 100644 --- a/src/misc/objects.c +++ b/src/misc/objects.c @@ -128,6 +128,10 @@ void * __vlc_object_create( vlc_object_t *p_this, int i_type ) i_size = sizeof(input_thread_t); psz_type = "input"; break; + case VLC_OBJECT_DEMUX: + i_size = sizeof(demux_t); + psz_type = "demux"; + break; case VLC_OBJECT_DECODER: i_size = sizeof(decoder_t); psz_type = "decoder"; -- GitLab