[vlc-devel] commit: Do not create an interface thread if not needed ( Rémi Denis-Courmont )

git version control git at videolan.org
Sat May 23 20:18:17 CEST 2009


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat May 23 20:34:50 2009 +0300| [c047aa40ae206d1af4ec7f88d511e27d141db759] | committer: Rémi Denis-Courmont 

Do not create an interface thread if not needed

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c047aa40ae206d1af4ec7f88d511e27d141db759
---

 src/interface/interface.c |   17 ++++++++---------
 1 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/interface/interface.c b/src/interface/interface.c
index 766c521..c8c97a7 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;
 }
 




More information about the vlc-devel mailing list