Commit a06213d7 authored by zorglub's avatar zorglub
Browse files

* Get rid of the Manager thread by making blocking interfaces listen to

  p_libvlc->b_die
  Not implemented for OS X as I am not sure, please check if it is feasible.
* Don't run the dummy interface
parent ade29e26
......@@ -119,6 +119,10 @@ VLC_EXPORT( int, intf_RunThread, ( intf_thread_t * ) );
VLC_EXPORT( void, intf_StopThread, ( intf_thread_t * ) );
VLC_EXPORT( void, intf_Destroy, ( intf_thread_t * ) );
/* If the interface is in the main thread, it should listen both to
* p_intf->b_die and p_libvlc->b_die */
#define intf_ShouldDie( p_intf ) (p_intf->b_die || (p_intf->b_block && p_intf->p_libvlc->b_die ) )
/*@}*/
/*****************************************************************************
......
......@@ -757,13 +757,13 @@ static gboolean Manage( gpointer p_interface )
msg_Err( p_intf, "Exception in CORBA events check loop" );
return FALSE;
}
vlc_mutex_lock( &p_intf->change_lock );
if( b_work_pending )
CORBA_ORB_perform_work( p_intf->p_sys->orb, ev );
if( p_intf->b_die )
if( intf_ShouldDie( p_intf ) )
{
vlc_mutex_unlock( &p_intf->change_lock );
CORBA_ORB_shutdown( p_intf->p_sys->orb, TRUE, ev );
......
......@@ -155,7 +155,7 @@ static void RunIntf( intf_thread_t *p_intf )
msg_Dbg( p_intf, "interface thread initialized" );
/* Main loop */
while( !p_intf->b_die )
while( !intf_ShouldDie( p_intf ) )
{
vlc_mutex_lock( &p_intf->change_lock );
......@@ -261,7 +261,7 @@ static int InitThread( intf_thread_t * p_intf )
{
char *psz_button;
/* we might need some locking here */
if( !p_intf->b_die )
if( !intf_ShouldDie( p_intf ) )
{
input_thread_t * p_input;
......
......@@ -164,7 +164,7 @@ static void Run( intf_thread_t *p_intf )
var_Set( p_intf->p_libvlc, p_hotkeys[i].psz_action, val );
}
while( !p_intf->b_die )
while( !intf_ShouldDie( p_intf ) )
{
int i_key, i_action;
int i_times = 0;
......
......@@ -431,7 +431,7 @@ static void Run( intf_thread_t *p_intf )
{
intf_sys_t *p_sys = p_intf->p_sys;
while( !p_intf->b_die )
while( !intf_ShouldDie( p_intf ) )
{
/* get the playlist */
if( p_sys->p_playlist == NULL )
......
......@@ -120,7 +120,7 @@ static void Run( intf_thread_t *p_intf )
{
char *code, *c;
while( !p_intf->b_die )
while( !intf_ShouldDie( p_intf ) )
{
/* Sleep a bit */
msleep( INTF_IDLE_SLEEP );
......@@ -136,7 +136,7 @@ static void Run( intf_thread_t *p_intf )
continue;
}
while( !p_intf->b_die
while( !intf_ShouldDie( p_intf )
&& lirc_code2char( p_intf->p_sys->config, code, &c ) == 0
&& c != NULL )
{
......
......@@ -132,7 +132,7 @@ static void RunIntf( intf_thread_t *p_intf )
{
int i_x, i_oldx = 0;
while( !p_intf->b_die )
while( !intf_ShouldDie( p_intf ) )
{
#define LOW_THRESHOLD 80
#define HIGH_THRESHOLD 100
......
......@@ -159,7 +159,7 @@ static void Run( intf_thread_t *p_intf )
/* High priority thread */
vlc_thread_set_priority( p_intf, VLC_THREAD_PRIORITY_INPUT );
while( !p_intf->b_die )
while( !intf_ShouldDie( p_intf ) )
{
struct timeval timeout;
fd_set fds_r;
......
......@@ -560,7 +560,7 @@ static void Run( intf_thread_t *p_intf )
}
#endif
while( !p_intf->b_die )
while( !intf_ShouldDie( p_intf ) )
{
char *psz_cmd, *psz_arg;
vlc_bool_t b_complete;
......@@ -2201,7 +2201,7 @@ vlc_bool_t ReadWin32( intf_thread_t *p_intf, char *p_buffer, int *pi_size )
while( WaitForSingleObject( p_intf->p_sys->hConsoleIn,
INTF_IDLE_SLEEP/1000 ) == WAIT_OBJECT_0 )
{
while( !p_intf->b_die && *pi_size < MAX_LINE_LENGTH &&
while( !intf_ShouldDie( p_intf ) && *pi_size < MAX_LINE_LENGTH &&
ReadConsoleInput( p_intf->p_sys->hConsoleIn, &input_record,
1, &i_dw ) )
{
......@@ -2271,7 +2271,7 @@ vlc_bool_t ReadCommand( intf_thread_t *p_intf, char *p_buffer, int *pi_size )
}
#endif
while( !p_intf->b_die && *pi_size < MAX_LINE_LENGTH &&
while( !intf_ShouldDie( p_intf ) && *pi_size < MAX_LINE_LENGTH &&
(i_read = net_ReadNonBlock( p_intf, p_intf->p_sys->i_socket == -1 ?
0 /*STDIN_FILENO*/ : p_intf->p_sys->i_socket, NULL,
(uint8_t *)p_buffer + *pi_size, 1, INTF_IDLE_SLEEP ) ) > 0 )
......
......@@ -116,7 +116,7 @@ static void RunIntf( intf_thread_t *p_intf )
}
/* Main loop */
while( !p_intf->b_die )
while( !intf_ShouldDie( p_intf ) )
{
vlc_mutex_lock( &p_intf->change_lock );
......@@ -175,7 +175,7 @@ static void RunIntf( intf_thread_t *p_intf )
*****************************************************************************/
static int InitThread( intf_thread_t * p_intf )
{
if( !p_intf->b_die )
if( !intf_ShouldDie( p_intf ) )
{
vlc_mutex_lock( &p_intf->change_lock );
......
......@@ -245,7 +245,7 @@ static void Run( intf_thread_t *p_intf )
psz_password = config_GetPsz( p_intf, "telnet-password" );
while( !p_intf->b_die )
while( !intf_ShouldDie( p_intf ) )
{
fd_set fds_read, fds_write;
int i_handle_max = 0;
......
......@@ -119,7 +119,7 @@ void E_(CloseIntf) ( vlc_object_t *p_this )
*****************************************************************************/
static void Run( intf_thread_t *p_intf )
{
while( !p_intf->b_die )
while( !intf_ShouldDie( p_intf ) )
{
p_intf->p_sys->p_window->UpdateInterface();
msleep( INTF_IDLE_SLEEP );
......
......@@ -1006,7 +1006,7 @@ static VLCMain *_o_sharedMainInstance = nil;
vlc_object_release( p_playlist );
while( !p_intf->b_die )
while( !intf_ShouldDie( p_intf ) )
{
vlc_mutex_lock( &p_intf->change_lock );
......
......@@ -336,7 +336,7 @@ static void Run( intf_thread_t *p_intf )
*/
t_last_refresh = ( time( 0 ) - 1);
while( !p_intf->b_die )
while( !intf_ShouldDie( p_intf ) )
{
msleep( INTF_IDLE_SLEEP );
......
......@@ -319,7 +319,7 @@ static void Run( intf_thread_t *p_intf )
#ifdef NEED_GTK2_MAIN
msg_Dbg( p_intf, "Manage GTK keyboard events using threads" );
while( !p_intf->b_die )
while( !intf_ShouldDie( p_intf ) )
{
Manage( p_intf );
......@@ -518,14 +518,14 @@ static int Manage( intf_thread_t *p_intf )
}
vlc_mutex_unlock( &p_input->object_lock );
}
else if( p_intf->p_sys->b_playing && !p_intf->b_die )
else if( p_intf->p_sys->b_playing && !intf_ShouldDie( p_intf ) )
{
E_(GtkModeManage)( p_intf );
p_intf->p_sys->b_playing = 0;
}
#ifndef NEED_GTK2_MAIN
if( p_intf->b_die )
if( intf_ShouldDie( p_intf ) )
{
vlc_mutex_unlock( &p_intf->change_lock );
......
......@@ -621,7 +621,7 @@ void MainInterface::updateOnTimer()
advControls->enableInput( THEMIM->getIM()->hasInput() );
advControls->enableVideo( THEMIM->getIM()->hasVideo() );
if( p_intf->b_die )
if( intf_ShouldDie( p_intf ) )
{
QApplication::closeAllWindows();
QApplication::quit();
......
......@@ -230,7 +230,7 @@ void VlcProc::dropVout()
void VlcProc::manage()
{
// Did the user request to quit vlc ?
if( getIntf()->b_die || getIntf()->p_libvlc->b_die )
if( intf_ShouldDie( getIntf() ) )
{
CmdQuit *pCmd = new CmdQuit( getIntf() );
AsyncQueue *pQueue = AsyncQueue::instance( getIntf() );
......
......@@ -210,14 +210,14 @@ void Timer::Notify( void )
}
}
}
else if( p_intf->p_sys->b_playing && !p_intf->b_die )
else if( p_intf->p_sys->b_playing && !intf_ShouldDie( p_intf ) )
{
p_intf->p_sys->b_playing = 0;
p_main_interface->TogglePlayButton( PAUSE_S );
i_old_playing_status = PAUSE_S;
}
if( p_intf->b_die )
if( intf_ShouldDie( p_intf ) )
{
vlc_mutex_unlock( &p_intf->change_lock );
......
......@@ -107,7 +107,7 @@ void Timer::Notify()
p_intf->p_sys->b_intf_show = VLC_FALSE;
}
if( p_intf->b_die )
if( intf_ShouldDie( p_intf ) )
{
vlc_mutex_unlock( &p_intf->change_lock );
......
......@@ -51,20 +51,7 @@ int E_(OpenIntf) ( vlc_object_t *p_this )
msg_Info( p_intf, "using the dummy interface module..." );
p_intf->pf_run = Run;
p_intf->pf_run = NULL;
return VLC_SUCCESS;
}
/*****************************************************************************
* Run: main loop
*****************************************************************************/
static void Run( intf_thread_t *p_intf )
{
while( !p_intf->b_die )
{
/* Wait a bit */
msleep( INTF_IDLE_SLEEP );
}
}
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