Commit 235cac96 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Revert "Remove b_should_run_on_first_thread"

This reverts commit 4dc0b22b.
parent deb8ae92
......@@ -53,6 +53,10 @@ typedef struct intf_thread_t
struct intf_thread_t *p_next; /** LibVLC interfaces book keeping */
vlc_thread_t thread; /** LibVLC thread */
/* Thread properties and locks */
#if defined( __APPLE__ )
bool b_should_run_on_first_thread;
#endif
/* Specific interfaces */
intf_sys_t * p_sys; /** system interface */
......
......@@ -106,6 +106,11 @@ int intf_Create( vlc_object_t *p_this, const char *chain )
var_AddCallback( p_intf, "intf-add", AddIntfCallback, NULL );
/* Attach interface to LibVLC */
#if defined( __APPLE__ )
p_intf->b_should_run_on_first_thread = false;
#endif
/* Choose the best module */
p_intf->p_cfg = NULL;
char *psz_parser = *chain == '$'
......@@ -124,6 +129,17 @@ int intf_Create( vlc_object_t *p_this, const char *chain )
goto error;
}
#if defined( __APPLE__ )
/* Hack to get Mac OS X Cocoa runtime running
* (it needs access to the main thread) */
if( p_intf->b_should_run_on_first_thread )
{
libvlc_SetExitHandler( p_libvlc, vlc_object_kill, p_intf );
assert( p_intf->pf_run );
p_intf->pf_run( p_intf );
}
else
#endif
/* Run the interface in a separate thread */
if( p_intf->pf_run
&& vlc_clone( &p_intf->thread,
......@@ -176,6 +192,9 @@ void intf_DestroyAll( libvlc_int_t *p_libvlc )
if( p_intf->pf_run )
{
vlc_cancel( p_intf->thread );
#ifdef __APPLE__
if (!p_intf->b_should_run_on_first_thread)
#endif
vlc_join( p_intf->thread, NULL );
}
module_unneed( p_intf, p_intf->p_module );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment