static libvlc_int_t * p_static_vlc = NULL;
static unsigned i_instances = 0;
+#ifndef WIN32
static bool b_daemon = false;
+#endif
/*****************************************************************************
* vlc_gc_*.
if (vlc_threads_init ())
return NULL;
- libvlc_global_data_t *p_libvlc_global = vlc_global();
/* Now that the thread system is initialized, we don't have much, but
* at least we have variables */
vlc_mutex_t *lock = var_AcquireMutex( "libvlc" );
{
/* Guess what CPU we have */
cpu_flags = CPUCapabilities();
- /* The module bank will be initialized later */
- p_libvlc_global->p_module_bank = NULL;
+ /* The module bank will be initialized later */
+ p_module_bank = NULL;
}
/* Allocate a libvlc instance object */
- p_libvlc = vlc_custom_create( VLC_OBJECT(p_libvlc_global),
- sizeof (*p_libvlc) + sizeof (libvlc_priv_t),
+ p_libvlc = __vlc_custom_create( NULL, sizeof (*priv),
VLC_OBJECT_LIBVLC, "libvlc" );
if( p_libvlc != NULL )
i_instances++;
#endif
/* Announce who we are - Do it only for first instance ? */
- msg_Dbg( p_libvlc, COPYRIGHT_MESSAGE );
+ msg_Dbg( p_libvlc, "%s", COPYRIGHT_MESSAGE );
msg_Dbg( p_libvlc, "libvlc was configured with %s", CONFIGURE_LINE );
/* Initialize mutexes */
vlc_mutex_init( &priv->timer_lock );
vlc_mutex_init( &priv->config_lock );
- priv->threads_count = 0;
- vlc_mutex_init (&priv->threads_lock);
- vlc_cond_init (NULL, &priv->threads_wait);
-
/* Store data for the non-reentrant API */
p_static_vlc = p_libvlc;
int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
const char *ppsz_argv[] )
{
- libvlc_global_data_t *p_libvlc_global = vlc_global();
libvlc_priv_t *priv = libvlc_priv (p_libvlc);
char p_capabilities[200];
char * p_tmp = NULL;
/* Check for plugins cache options */
if( config_GetInt( p_libvlc, "reset-plugins-cache" ) > 0 )
{
- p_libvlc_global->p_module_bank->b_cache_delete = true;
+ p_module_bank->b_cache_delete = true;
}
/* Will be re-done properly later on */
psz_language = config_GetPsz( p_libvlc, "language" );
if( psz_language && *psz_language && strcmp( psz_language, "auto" ) )
{
- bool b_cache_delete = p_libvlc_global->p_module_bank->b_cache_delete;
+ bool b_cache_delete = p_module_bank->b_cache_delete;
/* Reset the default domain */
SetLanguage( psz_language );
if( !config_GetInt( p_libvlc, "ignore-config" ) )
config_LoadConfigFile( p_libvlc, "main" );
config_LoadCmdLine( p_libvlc, &i_argc, ppsz_argv, true );
- p_libvlc_global->p_module_bank->b_cache_delete = b_cache_delete;
+ p_module_bank->b_cache_delete = b_cache_delete;
}
free( psz_language );
# endif
}
msg_Dbg( p_libvlc, "module bank initialized, found %i modules",
- vlc_internals( p_libvlc_global->p_module_bank )->i_children );
+ vlc_internals( p_module_bank )->i_children );
/* Check for help on modules */
if( (p_tmp = config_GetPsz( p_libvlc, "module" )) )
if( psz_codecs )
{
char *psz_morecodecs;
- asprintf(&psz_morecodecs, "%s,dmo,quicktime", psz_codecs);
- if( psz_morecodecs )
+ if( asprintf(&psz_morecodecs, "%s,dmo,quicktime", psz_codecs) != -1 )
{
config_PutPsz( p_libvlc, "codec", psz_morecodecs);
free( psz_morecodecs );
}
#endif
- /* Make sure all threads are completed before we start looking for
- * reference leaks and deinitializing core LibVLC subsytems. */
- vlc_mutex_lock (&priv->threads_lock);
- while (priv->threads_count)
- {
- msg_Dbg (p_libvlc, "waiting for %u remaining threads",
- priv->threads_count);
- vlc_cond_wait (&priv->threads_wait, &priv->threads_lock);
- }
- vlc_mutex_unlock (&priv->threads_lock);
-
bool b_clean = true;
FOREACH_ARRAY( input_item_t *p_del, priv->input_items )
msg_Err( p_libvlc, "input item %p has not been deleted properly: refcount %d, name %s",
/* Destroy mutexes */
vlc_mutex_destroy( &priv->config_lock );
vlc_mutex_destroy( &priv->timer_lock );
- vlc_cond_destroy (&priv->threads_wait);
- vlc_mutex_destroy (&priv->threads_lock);
vlc_object_release( p_libvlc );
p_libvlc = NULL;