]> git.sesse.net Git - vlc/blobdiff - src/libvlc.c
libvlccore: Don't set the priority on first thread on Mac OS X.
[vlc] / src / libvlc.c
index 128b79166a9925487afbcd70216d98b311553d58..842aa7270b95c376e8dec51088184c9f8476348d 100644 (file)
@@ -105,6 +105,41 @@ static unsigned          i_instances = 0;
 
 static bool b_daemon = false;
 
+/*****************************************************************************
+ * vlc_gc_*.
+ *****************************************************************************/
+void __vlc_gc_incref( gc_object_t * p_gc )
+{
+    assert( p_gc->i_gc_refcount > 0 );
+
+    /* FIXME: atomic version needed! */
+    p_gc->i_gc_refcount ++;
+}
+
+void __vlc_gc_decref( gc_object_t *p_gc )
+{
+    assert( p_gc );
+    assert( p_gc->i_gc_refcount > 0 );
+
+    /* FIXME: atomic version needed! */
+    p_gc->i_gc_refcount -- ;
+
+    if( p_gc->i_gc_refcount == 0 )
+    {
+        p_gc->pf_destructor( p_gc );
+        /* Do not use the p_gc pointer from now on ! */
+    }
+}
+
+void
+__vlc_gc_init( gc_object_t * p_gc, void (*pf_destructor)( gc_object_t * ),
+               void * arg)
+{
+    p_gc->i_gc_refcount = 1;
+    p_gc->pf_destructor = pf_destructor;
+    p_gc->p_destructor_arg = arg;
+}
+
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
@@ -271,12 +306,6 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
         return VLC_EGENERIC;
     }
 
-#ifdef __APPLE__
-    /* vlc_thread_set_priority needs to query the config,
-     * so this is the earliest moment where we can set this */
-    vlc_thread_set_priority( p_libvlc, VLC_THREAD_PRIORITY_LOW );
-#endif
-
     /* Check for short help option */
     if( config_GetInt( p_libvlc, "help" ) > 0 )
     {
@@ -760,7 +789,7 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
     }
     free( psz_modules );
 
-#ifdef ENABLE_SOUT
+#ifdef ENABLE_VLM
     /* Initialize VLM if vlm-conf is specified */
     psz_parser = config_GetPsz( p_libvlc, "vlm-conf" );
     if( psz_parser && *psz_parser )
@@ -927,7 +956,7 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
     {
         playlist_t *p_playlist = pl_Yield( p_libvlc );
         playlist_AddExt( p_playlist, val.psz_string, NULL, PLAYLIST_INSERT, 0,
-                         -1, NULL, 0, true, false );
+                         -1, NULL, 0, true, pl_Unlocked );
         pl_Release( p_libvlc );
     }
     free( val.psz_string );
@@ -954,7 +983,7 @@ int libvlc_InternalCleanup( libvlc_int_t *p_libvlc )
         vlc_object_release( p_intf ); /* for vlc_object_find() */
     }
 
-#ifdef ENABLE_SOUT
+#ifdef ENABLE_VLM
     /* Destroy VLM if created in libvlc_InternalInit */
     if( priv->p_vlm )
     {
@@ -1177,10 +1206,7 @@ static void SetLanguage ( const char *psz_lang )
      * the language at runtime under eg. Windows. Beware that this
      * makes the environment unconsistent when libvlc is unloaded and
      * should probably be moved to a safer place like vlc.c. */
-    static char psz_lcall[20];
-    snprintf( psz_lcall, 19, "LC_ALL=%s", psz_lang );
-    psz_lcall[19] = '\0';
-    putenv( psz_lcall );
+    setenv( "LC_ALL", psz_lang, 1 );
 #endif
 
     setlocale( LC_ALL, psz_lang );
@@ -1197,8 +1223,8 @@ static inline int LoadMessages (void)
     static const char psz_path[] = LOCALEDIR;
 #else
     char psz_path[1024];
-    if (snprintf (psz_path, sizeof (psz_path), "%s/%s",
-                  vlc_global()->psz_vlcpath, "locale")
+    if (snprintf (psz_path, sizeof (psz_path), "%s" DIR_SEP "%s",
+                  config_GetDataDir(), "locale")
                      >= (int)sizeof (psz_path))
         return -1;
 
@@ -1260,7 +1286,7 @@ static int GetFilenames( libvlc_int_t *p_vlc, int i_argc, const char *ppsz_argv[
         playlist_t *p_playlist = pl_Yield( p_vlc );
         playlist_AddExt( p_playlist, ppsz_argv[i_opt], NULL, PLAYLIST_INSERT,
                          0, -1, ( i_options ? &ppsz_argv[i_opt + 1] : NULL ),
-                         i_options, true, false );
+                         i_options, true, pl_Unlocked );
         pl_Release( p_vlc );
     }
 
@@ -1275,7 +1301,7 @@ static int GetFilenames( libvlc_int_t *p_vlc, int i_argc, const char *ppsz_argv[
 static inline void print_help_on_full_help( void )
 {
     utf8_fprintf( stdout, "\n" );
-    utf8_fprintf( stdout, "To get exhaustive help, use '-H'.\n" );
+    utf8_fprintf( stdout, "%s\n", _("To get exhaustive help, use '-H'.") );
 }
 
 static void Help( libvlc_int_t *p_this, char const *psz_help_name )