X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Flibvlc.c;h=407dabeeeb70c6b65a5cfe414f7359928a3f9406;hb=b751665aa8f78719eb3e4fe30545fffd5c423948;hp=128b79166a9925487afbcd70216d98b311553d58;hpb=855b60867eed208bda63bdc4a4aa0ea04d0428d6;p=vlc diff --git a/src/libvlc.c b/src/libvlc.c index 128b79166a..407dabeeeb 100644 --- a/src/libvlc.c +++ b/src/libvlc.c @@ -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 ) { @@ -1197,8 +1226,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 +1289,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 +1304,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 )