X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fncurses.c;h=67afea88991a953f8e2d594ba8a08b6580a4a825;hb=08d89300a6a09b812a406ecdf12c598fdf581d5d;hp=3a23b6ae13679ad66855d52c8b47d7f65787f61b;hpb=5e57cc0c1fc3618d5c77e6fa950327065f8b35de;p=vlc diff --git a/modules/gui/ncurses.c b/modules/gui/ncurses.c index 3a23b6ae13..67afea8899 100644 --- a/modules/gui/ncurses.c +++ b/modules/gui/ncurses.c @@ -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 ) ) )