]> git.sesse.net Git - vlc/commitdiff
Remove interface b_block property.
authorRémi Denis-Courmont <rem@videolan.org>
Sat, 15 Sep 2007 15:27:13 +0000 (15:27 +0000)
committerRémi Denis-Courmont <rem@videolan.org>
Sat, 15 Sep 2007 15:27:13 +0000 (15:27 +0000)
include/vlc_interface.h
modules/codec/cmml/cmml.c
modules/control/ntservice.c
modules/control/rc.c
src/interface/interface.c
src/libvlc-common.c
src/video_output/vout_intf.c

index 157752188352aad03935192142da0502bf7b0459..ef1bffaabdbddfb0bf9832a9b6451771e7e8dc08 100644 (file)
@@ -54,7 +54,6 @@ struct intf_thread_t
     VLC_COMMON_MEMBERS
 
     /* Thread properties and locks */
-    vlc_bool_t          b_block;
     vlc_bool_t          b_play;
 
     /* Specific interfaces */
index 7d8d9b1f82caadcafa5eecf41d02b7e3bc46587f..446a7f882d6ade01301865d028925488c8564a03 100644 (file)
@@ -127,7 +127,6 @@ static int OpenDecoder( vlc_object_t *p_this )
 
     /* initialise the CMML responder interface */
     p_sys->p_intf = intf_Create( p_dec, "cmml", 0, NULL );
-    p_sys->p_intf->b_block = VLC_FALSE;
     intf_RunThread( p_sys->p_intf );
 
     return VLC_SUCCESS;
index 31b942a1c5a5009d25f6c1ca0cf4b88953f65230..9b716a6bcafff5df8631a27c9b5295dee2339cca 100644 (file)
@@ -324,7 +324,6 @@ static void WINAPI ServiceDispatch( DWORD numArgs, char **args )
             }
 
             /* Try to run the interface */
-            p_new_intf->b_block = VLC_FALSE;
             if( intf_RunThread( p_new_intf ) )
             {
                 vlc_object_detach( p_new_intf );
index f874fb6f3e502ad99839fa1683960821c37d008f..24eec8b10a695f2b6b1e66a3a716b01c244de5c5 100644 (file)
@@ -1462,7 +1462,6 @@ static int Intf( vlc_object_t *p_this, char const *psz_cmd,
     p_newintf = intf_Create( p_this->p_libvlc, newval.psz_string, 0, NULL );
     if( p_newintf )
     {
-        p_newintf->b_block = VLC_FALSE;
         if( intf_RunThread( p_newintf ) )
         {
             vlc_object_detach( p_newintf );
index 7ed0822ede3d88a4fbed96fd5ef805bf77d3f267..a01f88cc91b72cb2f98a8362f2ce7dece52347ed 100644 (file)
@@ -136,14 +136,11 @@ intf_thread_t* __intf_Create( vlc_object_t *p_this, const char *psz_module,
 /*****************************************************************************
  * intf_RunThread: launch the interface thread
  *****************************************************************************
- * This function either creates a new thread and runs the interface in it,
- * or runs the interface in the current thread, depending on b_block.
+ * This function either creates a new thread and runs the interface in it.
  *****************************************************************************/
 /**
- * Run the interface thread.
+ * Starts and runs the interface thread.
  *
- * If b_block is not set, runs the interface in the thread, else,
- * creates a new thread and runs the interface.
  * \param p_intf the interface thread
  * \return VLC_SUCCESS on success, an error number else
  */
@@ -172,51 +169,26 @@ int intf_RunThread( intf_thread_t *p_intf )
     }
     else
 #endif
-    if( p_intf->b_block )
+
+    /* This interface doesn't need to be run */
+    if( p_intf->pf_run == NULL )
+        return VLC_SUCCESS;
+
+    /* Run the interface in a separate thread */
+    if( !strcmp( p_intf->p_module->psz_object_name, "macosx" ) )
     {
-        /* If we are clivlc+macosx, don't run the macosx GUI */
-        if( !strcmp( p_intf->p_module->psz_object_name, "macosx" ) )
-        {
-            msg_Err( p_intf, "You cannot run the MacOS X module as an "
-                             "interface in clivlc mode. Please read the "
-                             "README.MacOSX.rtf file.");
-            return VLC_EGENERIC;
-        }
-        /* If the main interface does not have a run function,
-         * implement a waiting loop ourselves
-         */
-        if( p_intf->pf_run )
-            RunInterface( p_intf );
-        else
-        {
-            while( !intf_ShouldDie( p_intf ) )
-                msleep( INTF_IDLE_SLEEP * 2);
-        }
-        vlc_object_kill( p_intf );
+        msg_Err( p_intf, "You cannot run the MacOS X module as an "
+                         "extra interface. Please read the "
+                         "README.MacOSX.rtf file.");
+        return VLC_EGENERIC;
     }
-    else
-    {
-        /* This interface doesn't need to be run */
-        if( !p_intf->pf_run )
-            return VLC_SUCCESS;
-
-        /* Run the interface in a separate thread */
-        if( !strcmp( p_intf->p_module->psz_object_name, "macosx" ) )
-        {
-            msg_Err( p_intf, "You cannot run the MacOS X module as an "
-                             "extra interface. Please read the "
-                             "README.MacOSX.rtf file.");
-            return VLC_EGENERIC;
-        }
 
-        /* Run the interface in a separate thread */
-        if( vlc_thread_create( p_intf, "interface", RunInterface,
-                               VLC_THREAD_PRIORITY_LOW, VLC_FALSE ) )
-        {
-            msg_Err( p_intf, "cannot spawn interface thread" );
-            return VLC_EGENERIC;
-        }
+    /* Run the interface in a separate thread */
+    if( vlc_thread_create( p_intf, "interface", RunInterface,
+                           VLC_THREAD_PRIORITY_LOW, VLC_FALSE ) )
+    {
+        msg_Err( p_intf, "cannot spawn interface thread" );
+        return VLC_EGENERIC;
     }
 
     return VLC_SUCCESS;
@@ -232,14 +204,11 @@ int intf_RunThread( intf_thread_t *p_intf )
 void intf_StopThread( intf_thread_t *p_intf )
 {
     /* Tell the interface to die */
-    if( !p_intf->b_block )
+    vlc_object_kill( p_intf );
+    if( p_intf->pf_run != NULL )
     {
-        vlc_object_kill( p_intf );
-        if( p_intf->pf_run )
-        {
-            vlc_cond_signal( &p_intf->object_wait );
-            vlc_thread_join( p_intf );
-        }
+        vlc_cond_signal( &p_intf->object_wait );
+        vlc_thread_join( p_intf );
     }
 }
 
@@ -426,7 +395,6 @@ static int AddIntfCallback( vlc_object_t *p_this, char const *psz_cmd,
     }
 
     /* Try to run the interface */
-    p_intf->b_block = VLC_FALSE;
     if( intf_RunThread( p_intf ) != VLC_SUCCESS )
     {
         vlc_object_detach( p_intf );
index f97f4defc175d9745d5e9a7159a4a9932965a121..861039227bdef0a2315bf8da4a13c6fec2d44691 100644 (file)
@@ -1132,7 +1132,6 @@ int libvlc_InternalAddIntf( libvlc_int_t *p_libvlc,
 
     /* Try to run the interface */
     p_intf->b_play = b_play;
-    p_intf->b_block = b_block;
     i_err = intf_RunThread( p_intf );
     if( i_err )
     {
@@ -1141,6 +1140,22 @@ int libvlc_InternalAddIntf( libvlc_int_t *p_libvlc,
         p_intf = NULL;
         return i_err;
     }
+
+    if( b_block )
+    {
+        /* FIXME: should be moved to interface/interface.c */
+        if( p_intf->pf_run )
+            vlc_thread_join( p_intf );
+        else
+       {
+            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 );
+        }
+        vlc_object_detach( p_intf );
+        intf_Destroy( p_intf );
+    }
+
     return VLC_SUCCESS;
 };
 
index 1a45693bc99034da2286af8cb3beb0b8eb1831b0..aac53af30d59c609ec2702bae3157afef8fa58a3 100644 (file)
@@ -107,7 +107,7 @@ void *vout_RequestWindow( vout_thread_t *p_vout,
     for( i = 0; i < p_list->i_count; i++ )
     {
         p_intf = (intf_thread_t *)p_list->p_values[i].p_object;
-        if( p_intf->b_block && p_intf->pf_request_window ) break;
+        if( p_intf->pf_request_window ) break;
         p_intf = NULL;
     }