From: RĂ©mi Denis-Courmont Date: Sat, 23 May 2009 17:34:50 +0000 (+0300) Subject: Do not create an interface thread if not needed X-Git-Tag: 1.1.0-ff~5802 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=c047aa40ae206d1af4ec7f88d511e27d141db759;hp=156dd2adfd686140ee7cafc272a5cc2d5c644150;p=vlc Do not create an interface thread if not needed --- diff --git a/src/interface/interface.c b/src/interface/interface.c index 766c521690..c8c97a71c6 100644 --- a/src/interface/interface.c +++ b/src/interface/interface.c @@ -138,6 +138,9 @@ int intf_Create( vlc_object_t *p_this, const char *psz_module ) return VLC_EGENERIC; } + if( p_intf->pf_run == NULL ) + return VLC_SUCCESS; + #if defined( __APPLE__ ) || defined( WIN32 ) /* Hack to get Mac OS X Cocoa runtime running * (it needs access to the main thread) */ @@ -150,7 +153,7 @@ int intf_Create( vlc_object_t *p_this, const char *psz_module ) vlc_object_release( p_intf ); return VLC_ENOMEM; } - RunInterface( VLC_OBJECT(p_intf) ); + p_intf->pf_run( p_intf ); /* Make sure our MonitorLibVLCDeath thread exit */ vlc_object_kill( p_intf ); @@ -160,8 +163,8 @@ int intf_Create( vlc_object_t *p_this, const char *psz_module ) vlc_object_detach( p_intf ); vlc_object_release( p_intf ); - return VLC_SUCCESS; } + else #endif /* Run the interface in a separate thread */ if( vlc_thread_create( p_intf, "interface", RunInterface, @@ -186,13 +189,12 @@ void intf_StopThread( intf_thread_t *p_intf ) { /* Tell the interface to die */ vlc_object_kill( p_intf ); - vlc_thread_join( p_intf ); + if( p_intf->pf_run ) + vlc_thread_join( p_intf ); module_unneed( p_intf, p_intf->p_module ); } - - /* Following functions are local */ /** @@ -204,10 +206,7 @@ static void* RunInterface( vlc_object_t *p_this ) { intf_thread_t *p_intf = (intf_thread_t *)p_this; - /* Give control to the interface */ - if( p_intf->pf_run ) - p_intf->pf_run( p_intf ); - + p_intf->pf_run( p_intf ); return NULL; }