]> git.sesse.net Git - vlc/blobdiff - modules/gui/ncurses.c
Add a directory type parameter to config_GetHomeDir
[vlc] / modules / gui / ncurses.c
index 3a23b6ae13679ad66855d52c8b47d7f65787f61b..67afea88991a953f8e2d594ba8a08b6580a4a825 100644 (file)
@@ -310,7 +310,7 @@ static int Open( vlc_object_t *p_this )
         p_sys->psz_current_dir = psz_tmp;
     else
     {
-        p_sys->psz_current_dir = strdup( config_GetHomeDir() );
+        p_sys->psz_current_dir = config_GetUserDir( VLC_HOME_DIR );
         free( psz_tmp );
     }
 
@@ -548,7 +548,6 @@ static inline int RemoveLastUTF8Entity( char *psz, int len )
 static int HandleKey( intf_thread_t *p_intf, int i_key )
 {
     intf_sys_t *p_sys = p_intf->p_sys;
-    vlc_value_t val;
     int i_ret = 1;
 
     playlist_t *p_playlist = pl_Hold( p_intf );
@@ -560,22 +559,15 @@ static int HandleKey( intf_thread_t *p_intf, int i_key )
 
         switch( i_key )
         {
-            vlc_value_t val;
             /* Playlist Settings */
             case 'r':
-                var_Get( p_playlist, "random", &val );
-                val.b_bool = !val.b_bool;
-                var_Set( p_playlist, "random", val );
+                var_ToggleBool( p_playlist, "random" );
                 goto end;
             case 'l':
-                var_Get( p_playlist, "loop", &val );
-                val.b_bool = !val.b_bool;
-                var_Set( p_playlist, "loop", val );
+                var_ToggleBool( p_playlist, "loop" );
                 goto end;
             case 'R':
-                var_Get( p_playlist, "repeat", &val );
-                val.b_bool = !val.b_bool;
-                var_Set( p_playlist, "repeat", val );
+                var_ToggleBool( p_playlist, "repeat" );
                 goto end;
 
             /* Playlist sort */
@@ -753,8 +745,15 @@ static int HandleKey( intf_thread_t *p_intf, int i_key )
                 if( p_sys->pp_dir_entries[p_sys->i_box_bidx]->b_file || i_key == ' ' )
                 {
                     char* psz_uri;
-                    if( asprintf( &psz_uri, "directory://%s/%s", p_sys->psz_current_dir, p_sys->pp_dir_entries[p_sys->i_box_bidx]->psz_path ) == -1 )
+                    if( asprintf( &psz_uri, "%s://%s/%s",
+                        p_sys->pp_dir_entries[p_sys->i_box_bidx]->b_file ?
+                            "file" : "directory",
+                        p_sys->psz_current_dir,
+                        p_sys->pp_dir_entries[p_sys->i_box_bidx]->psz_path
+                        ) == -1 )
+                    {
                         psz_uri = NULL;
+                    }
 
                     playlist_item_t *p_parent = p_sys->p_node;
                     if( !p_parent )
@@ -960,6 +959,7 @@ static int HandleKey( intf_thread_t *p_intf, int i_key )
                 {
                     playlist_item_t *p_parent = p_sys->p_node;
 
+                    PL_LOCK;
                     if( !p_parent )
                     p_parent = playlist_CurrentPlayingItem(p_playlist) ? playlist_CurrentPlayingItem(p_playlist)->p_parent : NULL;
                     if( !p_parent )
@@ -967,6 +967,7 @@ static int HandleKey( intf_thread_t *p_intf, int i_key )
 
                     while( p_parent->p_parent && p_parent->p_parent->p_parent )
                         p_parent = p_parent->p_parent;
+                    PL_UNLOCK;
 
                     playlist_Add( p_playlist, p_sys->psz_open_chain, NULL,
                                   PLAYLIST_APPEND|PLAYLIST_GO, PLAYLIST_END,
@@ -1137,16 +1138,12 @@ static int HandleKey( intf_thread_t *p_intf, int i_key )
                                           VLC_OBJECT_VOUT, FIND_CHILD );
                 if( p_vout )
                 {
-                    var_Get( p_vout, "fullscreen", &val );
-                    val.b_bool = !val.b_bool;
-                    var_Set( p_vout, "fullscreen", val );
+                    var_ToggleBool( p_vout, "fullscreen" );
                     vlc_object_release( p_vout );
                 }
                 else
                 {
-                    var_Get( p_playlist, "fullscreen", &val );
-                    val.b_bool = !val.b_bool;
-                    var_Set( p_playlist, "fullscreen", val );
+                    var_ToggleBool( p_playlist, "fullscreen" );
                 }
             }
             i_ret = 0;
@@ -1167,22 +1164,22 @@ static int HandleKey( intf_thread_t *p_intf, int i_key )
 
         case '[':
             if( p_sys->p_input )
-                var_SetVoid( p_sys->p_input, "prev-title" );
+                var_TriggerCallback( p_sys->p_input, "prev-title" );
             break;
 
         case ']':
             if( p_sys->p_input )
-                var_SetVoid( p_sys->p_input, "next-title" );
+                var_TriggerCallback( p_sys->p_input, "next-title" );
             break;
 
         case '<':
             if( p_sys->p_input )
-                var_SetVoid( p_sys->p_input, "prev-chapter" );
+                var_TriggerCallback( p_sys->p_input, "prev-chapter" );
             break;
 
         case '>':
             if( p_sys->p_input )
-                var_SetVoid( p_sys->p_input, "next-chapter" );
+                var_TriggerCallback( p_sys->p_input, "next-chapter" );
             break;
 
         case 'p':
@@ -1456,11 +1453,11 @@ static void MainBoxWrite( intf_thread_t *p_intf, int l, int x, const char *p_fmt
 
 static void DumpObject( intf_thread_t *p_intf, int *l, vlc_object_t *p_obj, int i_level )
 {
-    if( p_obj->psz_object_name )
+    /*if( p_obj->psz_object_name )
         MainBoxWrite( p_intf, (*l)++, 1 + 2 * i_level, "%s \"%s\" (%p)",
                 p_obj->psz_object_type, p_obj->psz_object_name,
                 p_obj );
-    else
+    else*/
         MainBoxWrite( p_intf, (*l)++, 1 + 2 * i_level, "%s (%o)",
                 p_obj->psz_object_type, p_obj );
 
@@ -2147,9 +2144,11 @@ static void Redraw( intf_thread_t *p_intf, time_t *t_last_refresh )
             input_thread_t *p_input2 = playlist_CurrentInput( p_playlist );
 
             PL_LOCK;
+            assert( p_item );
+            playlist_item_t *p_current_playing_item = playlist_CurrentPlayingItem(p_playlist);
             if( ( p_node && p_item->p_input == p_node->p_input ) ||
-                        ( !p_node && p_input2 &&
-                          p_item->p_input == playlist_CurrentPlayingItem(p_playlist)->p_input ) )
+                        ( !p_node && p_input2 && p_current_playing_item &&
+                          p_item->p_input == p_current_playing_item->p_input ) )
                 c = '*';
             else if( p_item == p_node || ( p_item != p_node &&
                         PlaylistIsPlaying( p_playlist, p_item ) ) )