From c047aa40ae206d1af4ec7f88d511e27d141db759 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sat, 23 May 2009 20:34:50 +0300 Subject: [PATCH] Do not create an interface thread if not needed --- src/interface/interface.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) 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; } -- 2.39.5