From: Clément Stenac Date: Sun, 24 Sep 2006 10:40:00 +0000 (+0000) Subject: Convert hotkeys to using cond_wait/cond_signal X-Git-Tag: 0.9.0-test0~10154 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=353ece46279797b5684fafdfc135b9104591fbc9;p=vlc Convert hotkeys to using cond_wait/cond_signal This removes useless wakeups and improves hotkeys reactivity --- diff --git a/modules/control/hotkeys.c b/modules/control/hotkeys.c index fe0c9b6dc5..8c339bc521 100644 --- a/modules/control/hotkeys.c +++ b/modules/control/hotkeys.c @@ -170,7 +170,7 @@ static void Run( intf_thread_t *p_intf ) int i_times = 0; /* Sleep a bit */ - msleep( INTF_IDLE_SLEEP ); +// msleep( INTF_IDLE_SLEEP ); /* Update the input */ if( p_intf->p_sys->p_input == NULL ) @@ -228,8 +228,11 @@ static void Run( intf_thread_t *p_intf ) if( !i_action ) { + 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 ); /* No key pressed, sleep a bit more */ - msleep( INTF_IDLE_SLEEP ); +// msleep( INTF_IDLE_SLEEP ); continue; } @@ -746,6 +749,9 @@ static int KeyEvent( vlc_object_t *p_this, char const *psz_var, p_intf->p_sys->p_keys[ p_intf->p_sys->i_size ] = newval.i_int; p_intf->p_sys->i_size++; } + vlc_mutex_lock( &p_intf->object_lock ); + vlc_cond_signal( &p_intf->object_wait ); + vlc_mutex_unlock( &p_intf->object_lock ); vlc_mutex_unlock( &p_intf->p_sys->change_lock ); return VLC_SUCCESS; diff --git a/src/interface/interface.c b/src/interface/interface.c index 6216136fc5..958c26d8c4 100644 --- a/src/interface/interface.c +++ b/src/interface/interface.c @@ -261,7 +261,10 @@ void intf_StopThread( intf_thread_t *p_intf ) { p_intf->b_die = VLC_TRUE; if( p_intf->pf_run ) + { + vlc_cond_signal( &p_intf->object_wait ); vlc_thread_join( p_intf ); + } } }