Commit 04058ca6 authored by sebastien's avatar sebastien

vlm : call var_DelCallback after input thread is joined.

This reverts vlm callback behaviour before 67b16b1b
parent 8b2cb8f2
...@@ -544,6 +544,8 @@ VLC_API int input_vaControl( input_thread_t *, int i_query, va_list ); ...@@ -544,6 +544,8 @@ VLC_API int input_vaControl( input_thread_t *, int i_query, va_list );
VLC_API int input_Control( input_thread_t *, int i_query, ... ); VLC_API int input_Control( input_thread_t *, int i_query, ... );
VLC_API void input_Close( input_thread_t * ); VLC_API void input_Close( input_thread_t * );
void input_Join( input_thread_t * );
void input_Release( input_thread_t * );
/** /**
* Get the input item for an input thread * Get the input item for an input thread
......
...@@ -252,6 +252,17 @@ void input_Stop( input_thread_t *p_input, bool b_abort ) ...@@ -252,6 +252,17 @@ void input_Stop( input_thread_t *p_input, bool b_abort )
input_ControlPush( p_input, INPUT_CONTROL_SET_DIE, NULL ); input_ControlPush( p_input, INPUT_CONTROL_SET_DIE, NULL );
} }
void input_Join( input_thread_t *p_input )
{
if( p_input->p->is_running )
vlc_join( p_input->p->thread, NULL );
}
void input_Release( input_thread_t *p_input )
{
vlc_object_release( p_input );
}
/** /**
* Close an input * Close an input
* *
...@@ -259,9 +270,8 @@ void input_Stop( input_thread_t *p_input, bool b_abort ) ...@@ -259,9 +270,8 @@ void input_Stop( input_thread_t *p_input, bool b_abort )
*/ */
void input_Close( input_thread_t *p_input ) void input_Close( input_thread_t *p_input )
{ {
if( p_input->p->is_running ) input_Join( p_input );
vlc_join( p_input->p->thread, NULL ); input_Release( p_input );
vlc_object_release( p_input );
} }
/** /**
......
...@@ -912,8 +912,9 @@ static void vlm_MediaInstanceDelete( vlm_t *p_vlm, int64_t id, vlm_media_instanc ...@@ -912,8 +912,9 @@ static void vlm_MediaInstanceDelete( vlm_t *p_vlm, int64_t id, vlm_media_instanc
if( p_input ) if( p_input )
{ {
input_Stop( p_input, true ); input_Stop( p_input, true );
input_Join( p_input );
var_DelCallback( p_instance->p_input, "intf-event", InputEvent, p_media ); var_DelCallback( p_instance->p_input, "intf-event", InputEvent, p_media );
input_Close( p_input ); input_Release( p_input );
vlm_SendEventMediaInstanceStopped( p_vlm, id, p_media->cfg.psz_name ); vlm_SendEventMediaInstanceStopped( p_vlm, id, p_media->cfg.psz_name );
} }
...@@ -1006,8 +1007,9 @@ static int vlm_ControlMediaInstanceStart( vlm_t *p_vlm, int64_t id, const char * ...@@ -1006,8 +1007,9 @@ static int vlm_ControlMediaInstanceStart( vlm_t *p_vlm, int64_t id, const char *
input_Stop( p_input, true ); input_Stop( p_input, true );
input_Join( p_input );
var_DelCallback( p_instance->p_input, "intf-event", InputEvent, p_media ); var_DelCallback( p_instance->p_input, "intf-event", InputEvent, p_media );
input_Close( p_input ); input_Release( p_input );
if( !p_instance->b_sout_keep ) if( !p_instance->b_sout_keep )
input_resource_TerminateSout( p_instance->p_input_resource ); input_resource_TerminateSout( p_instance->p_input_resource );
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment