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

Remove interface b_block property.

parent 25314fa7
......@@ -54,7 +54,6 @@ struct intf_thread_t
VLC_COMMON_MEMBERS
/* Thread properties and locks */
vlc_bool_t b_block;
vlc_bool_t b_play;
/* Specific interfaces */
......
......@@ -127,7 +127,6 @@ static int OpenDecoder( vlc_object_t *p_this )
/* initialise the CMML responder interface */
p_sys->p_intf = intf_Create( p_dec, "cmml", 0, NULL );
p_sys->p_intf->b_block = VLC_FALSE;
intf_RunThread( p_sys->p_intf );
return VLC_SUCCESS;
......
......@@ -324,7 +324,6 @@ static void WINAPI ServiceDispatch( DWORD numArgs, char **args )
}
/* Try to run the interface */
p_new_intf->b_block = VLC_FALSE;
if( intf_RunThread( p_new_intf ) )
{
vlc_object_detach( p_new_intf );
......
......@@ -1462,7 +1462,6 @@ static int Intf( vlc_object_t *p_this, char const *psz_cmd,
p_newintf = intf_Create( p_this->p_libvlc, newval.psz_string, 0, NULL );
if( p_newintf )
{
p_newintf->b_block = VLC_FALSE;
if( intf_RunThread( p_newintf ) )
{
vlc_object_detach( p_newintf );
......
......@@ -136,14 +136,11 @@ intf_thread_t* __intf_Create( vlc_object_t *p_this, const char *psz_module,
/*****************************************************************************
* intf_RunThread: launch the interface thread
*****************************************************************************
* This function either creates a new thread and runs the interface in it,
* or runs the interface in the current thread, depending on b_block.
* This function either creates a new thread and runs the interface in it.
*****************************************************************************/
/**
* Run the interface thread.
* Starts and runs the interface thread.
*
* If b_block is not set, runs the interface in the thread, else,
* creates a new thread and runs the interface.
* \param p_intf the interface thread
* \return VLC_SUCCESS on success, an error number else
*/
......@@ -172,51 +169,26 @@ int intf_RunThread( intf_thread_t *p_intf )
}
else
#endif
if( p_intf->b_block )
/* This interface doesn't need to be run */
if( p_intf->pf_run == NULL )
return VLC_SUCCESS;
/* Run the interface in a separate thread */
if( !strcmp( p_intf->p_module->psz_object_name, "macosx" ) )
{
/* If we are clivlc+macosx, don't run the macosx GUI */
if( !strcmp( p_intf->p_module->psz_object_name, "macosx" ) )
{
msg_Err( p_intf, "You cannot run the MacOS X module as an "
"interface in clivlc mode. Please read the "
"README.MacOSX.rtf file.");
return VLC_EGENERIC;
}
/* If the main interface does not have a run function,
* implement a waiting loop ourselves
*/
if( p_intf->pf_run )
RunInterface( p_intf );
else
{
while( !intf_ShouldDie( p_intf ) )
msleep( INTF_IDLE_SLEEP * 2);
}
vlc_object_kill( p_intf );
msg_Err( p_intf, "You cannot run the MacOS X module as an "
"extra interface. Please read the "
"README.MacOSX.rtf file.");
return VLC_EGENERIC;
}
else
{
/* This interface doesn't need to be run */
if( !p_intf->pf_run )
return VLC_SUCCESS;
/* Run the interface in a separate thread */
if( !strcmp( p_intf->p_module->psz_object_name, "macosx" ) )
{
msg_Err( p_intf, "You cannot run the MacOS X module as an "
"extra interface. Please read the "
"README.MacOSX.rtf file.");
return VLC_EGENERIC;
}
/* Run the interface in a separate thread */
if( vlc_thread_create( p_intf, "interface", RunInterface,
VLC_THREAD_PRIORITY_LOW, VLC_FALSE ) )
{
msg_Err( p_intf, "cannot spawn interface thread" );
return VLC_EGENERIC;
}
/* Run the interface in a separate thread */
if( vlc_thread_create( p_intf, "interface", RunInterface,
VLC_THREAD_PRIORITY_LOW, VLC_FALSE ) )
{
msg_Err( p_intf, "cannot spawn interface thread" );
return VLC_EGENERIC;
}
return VLC_SUCCESS;
......@@ -232,14 +204,11 @@ int intf_RunThread( intf_thread_t *p_intf )
void intf_StopThread( intf_thread_t *p_intf )
{
/* Tell the interface to die */
if( !p_intf->b_block )
vlc_object_kill( p_intf );
if( p_intf->pf_run != NULL )
{
vlc_object_kill( p_intf );
if( p_intf->pf_run )
{
vlc_cond_signal( &p_intf->object_wait );
vlc_thread_join( p_intf );
}
vlc_cond_signal( &p_intf->object_wait );
vlc_thread_join( p_intf );
}
}
......@@ -426,7 +395,6 @@ static int AddIntfCallback( vlc_object_t *p_this, char const *psz_cmd,
}
/* Try to run the interface */
p_intf->b_block = VLC_FALSE;
if( intf_RunThread( p_intf ) != VLC_SUCCESS )
{
vlc_object_detach( p_intf );
......
......@@ -1132,7 +1132,6 @@ int libvlc_InternalAddIntf( libvlc_int_t *p_libvlc,
/* Try to run the interface */
p_intf->b_play = b_play;
p_intf->b_block = b_block;
i_err = intf_RunThread( p_intf );
if( i_err )
{
......@@ -1141,6 +1140,22 @@ int libvlc_InternalAddIntf( libvlc_int_t *p_libvlc,
p_intf = NULL;
return i_err;
}
if( b_block )
{
/* FIXME: should be moved to interface/interface.c */
if( p_intf->pf_run )
vlc_thread_join( p_intf );
else
{
vlc_mutex_lock( &p_intf->object_lock );
vlc_cond_wait( &p_intf->object_wait, &p_intf->object_lock );
vlc_mutex_unlock( &p_intf->object_lock );
}
vlc_object_detach( p_intf );
intf_Destroy( p_intf );
}
return VLC_SUCCESS;
};
......
......@@ -107,7 +107,7 @@ void *vout_RequestWindow( vout_thread_t *p_vout,
for( i = 0; i < p_list->i_count; i++ )
{
p_intf = (intf_thread_t *)p_list->p_values[i].p_object;
if( p_intf->b_block && p_intf->pf_request_window ) break;
if( p_intf->pf_request_window ) break;
p_intf = NULL;
}
......
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