]> git.sesse.net Git - vlc/blobdiff - modules/misc/lua/libs/misc.c
Add --data-path option. Access the src share directory now works from build tree.
[vlc] / modules / misc / lua / libs / misc.c
index 2f8a5b53e3736a3f7d7629235486e8cbe071f034..e5a1f02aa175fc1681ca86b9e56fe784c4348ae1 100644 (file)
@@ -105,7 +105,7 @@ static int vlclua_quit( lua_State *L )
     vlc_object_t *p_this = vlclua_get_this( L );
     /* The rc.c code also stops the playlist ... not sure if this is needed
      * though. */
-    vlc_object_kill( p_this->p_libvlc );
+    libvlc_Quit( p_this->p_libvlc );
     return 0;
 }
 
@@ -114,19 +114,31 @@ static int vlclua_quit( lua_State *L )
  *****************************************************************************/
 static int vlclua_datadir( lua_State *L )
 {
-    lua_pushstring( L, config_GetDataDir() );
+    char *psz_data = config_GetDataDir( vlclua_get_this( L ) );
+    lua_pushstring( L, psz_data );
+    free( psz_data );
+    return 1;
+}
+
+static int vlclua_userdatadir( lua_State *L )
+{
+    char *dir = config_GetUserDir( VLC_DATA_DIR );
+    lua_pushstring( L, dir );
+    free( dir );
     return 1;
 }
 
 static int vlclua_homedir( lua_State *L )
 {
-    lua_pushstring( L, config_GetHomeDir() );
+    char *home = config_GetUserDir( VLC_HOME_DIR );
+    lua_pushstring( L, home );
+    free( home );
     return 1;
 }
 
 static int vlclua_configdir( lua_State *L )
 {
-    char *dir = config_GetUserConfDir();
+    char *dir = config_GetUserDir( VLC_CONFIG_DIR );
     lua_pushstring( L, dir );
     free( dir );
     return 1;
@@ -134,7 +146,7 @@ static int vlclua_configdir( lua_State *L )
 
 static int vlclua_cachedir( lua_State *L )
 {
-    char *dir = config_GetCacheDir();
+    char *dir = config_GetUserDir( VLC_CACHE_DIR );
     lua_pushstring( L, dir );
     free( dir );
     return 1;
@@ -147,7 +159,8 @@ static int vlclua_datadir_list( lua_State *L )
     char **ppsz_dir = ppsz_dir_list;
     int i = 1;
 
-    if( vlclua_dir_list( psz_dirname, ppsz_dir_list ) != VLC_SUCCESS )
+    if( vlclua_dir_list( vlclua_get_this( L ), psz_dirname, ppsz_dir_list )
+        != VLC_SUCCESS )
         return 0;
     lua_newtable( L );
     for( ; *ppsz_dir; ppsz_dir++ )
@@ -156,6 +169,7 @@ static int vlclua_datadir_list( lua_State *L )
         lua_rawseti( L, -2, i );
         i ++;
     }
+    vlclua_dir_list_free( ppsz_dir_list );
     return 1;
 }
 /*****************************************************************************
@@ -163,17 +177,15 @@ static int vlclua_datadir_list( lua_State *L )
  *****************************************************************************/
 static int vlclua_lock_and_wait( lua_State *L )
 {
-    vlc_object_t *p_this = vlclua_get_this( L );
-    int b_quit = vlc_object_lock_and_wait( p_this );
-    lua_pushboolean( L, b_quit );
-    return 1;
-}
+    intf_thread_t *p_intf = (intf_thread_t *)vlclua_get_this( L );
+    intf_sys_t *p_sys = p_intf->p_sys;
 
-static int vlclua_signal( lua_State *L )
-{
-    vlc_object_t *p_this = vlclua_get_this( L );
-    vlc_object_signal( p_this );
-    return 0;
+    vlc_mutex_lock( &p_sys->lock );
+    while( !p_sys->exiting )
+        vlc_cond_wait( &p_sys->wait, &p_sys->lock );
+    vlc_mutex_unlock( &p_sys->lock );
+    lua_pushboolean( L, 1 );
+    return 1;
 }
 
 static int vlclua_mdate( lua_State *L )
@@ -182,10 +194,17 @@ static int vlclua_mdate( lua_State *L )
     return 1;
 }
 
+static int vlclua_mwait( lua_State *L )
+{
+    double f = luaL_checknumber( L, 1 );
+    mwait( (int64_t)f );
+    return 0;
+}
+
 static int vlclua_intf_should_die( lua_State *L )
 {
     intf_thread_t *p_intf = (intf_thread_t*)vlclua_get_this( L );
-    lua_pushboolean( L, intf_ShouldDie( p_intf ) );
+    lua_pushboolean( L, p_intf->p_sys->exiting );
     return 1;
 }
 
@@ -198,15 +217,16 @@ static const luaL_Reg vlclua_misc_reg[] = {
     { "license", vlclua_license },
 
     { "datadir", vlclua_datadir },
+    { "userdatadir", vlclua_userdatadir },
     { "homedir", vlclua_homedir },
     { "configdir", vlclua_configdir },
     { "cachedir", vlclua_cachedir },
     { "datadir_list", vlclua_datadir_list },
 
     { "mdate", vlclua_mdate },
+    { "mwait", vlclua_mwait },
 
     { "lock_and_wait", vlclua_lock_and_wait },
-    { "signal", vlclua_signal },
 
     { "should_die", vlclua_intf_should_die },
     { "quit", vlclua_quit },