X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fncurses.c;h=e1f190a3f503a6562d79d8d8ae4b0517c3f05797;hb=99f02e92782d40eb07808b687b572faf5f6129f5;hp=8bf7d8f2e161fee8bf402f6c023c64893fab58f4;hpb=766a63a878ad172d309095427cfd8518068be6b7;p=vlc diff --git a/modules/gui/ncurses.c b/modules/gui/ncurses.c index 8bf7d8f2e1..e1f190a3f5 100644 --- a/modules/gui/ncurses.c +++ b/modules/gui/ncurses.c @@ -56,28 +56,13 @@ #include #include #include +#include #include #ifdef HAVE_SYS_STAT_H # include #endif -#if (!defined( WIN32 ) || defined(__MINGW32__)) -/* Mingw has its own version of dirent */ -# include -#endif - -#ifdef HAVE_CDDAX -#define CDDA_MRL "cddax://" -#else -#define CDDA_MRL "cdda://" -#endif - -#ifdef HAVE_VCDX -#define VCD_MRL "vcdx://" -#else -#define VCD_MRL "vcd://" -#endif #define SEARCH_CHAIN_SIZE 20 #define OPEN_CHAIN_SIZE 50 @@ -310,7 +295,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 ); } @@ -350,7 +335,6 @@ static void Close( vlc_object_t *p_this ) { vlc_object_release( p_sys->p_input ); } - pl_Release( p_intf ); /* Close the ncurses interface */ endwin(); @@ -367,7 +351,7 @@ static void Close( vlc_object_t *p_this ) static void Run( intf_thread_t *p_intf ) { intf_sys_t *p_sys = p_intf->p_sys; - playlist_t *p_playlist = pl_Hold( p_intf ); + playlist_t *p_playlist = pl_Get( p_intf ); p_sys->p_playlist = p_playlist; int i_key; @@ -548,10 +532,9 @@ 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 ); + playlist_t *p_playlist = pl_Get( p_intf ); if( p_sys->i_box_type == BOX_PLAYLIST ) { @@ -560,7 +543,6 @@ static int HandleKey( intf_thread_t *p_intf, int i_key ) switch( i_key ) { - vlc_value_t val; /* Playlist Settings */ case 'r': var_ToggleBool( p_playlist, "random" ); @@ -747,8 +729,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 ) @@ -1126,20 +1115,15 @@ static int HandleKey( intf_thread_t *p_intf, int i_key ) /* Common control */ case 'f': { + bool fs = var_ToggleBool( p_playlist, "fullscreen" ); if( p_intf->p_sys->p_input ) { - vout_thread_t *p_vout; - p_vout = vlc_object_find( p_intf->p_sys->p_input, - VLC_OBJECT_VOUT, FIND_CHILD ); + vout_thread_t *p_vout = input_GetVout( p_intf->p_sys->p_input ); if( p_vout ) { - var_ToggleBool( p_vout, "fullscreen" ); + var_SetBool( p_vout, "fullscreen", fs ); vlc_object_release( p_vout ); } - else - { - var_ToggleBool( p_playlist, "fullscreen" ); - } } i_ret = 0; break; @@ -1210,7 +1194,6 @@ static int HandleKey( intf_thread_t *p_intf, int i_key ) } end: - pl_Release( p_intf ); return i_ret; } @@ -1448,10 +1431,13 @@ 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 ) + char *psz_name = vlc_object_get_name( p_obj ); + if( psz_name ) + { MainBoxWrite( p_intf, (*l)++, 1 + 2 * i_level, "%s \"%s\" (%p)", - p_obj->psz_object_type, p_obj->psz_object_name, - p_obj ); + p_obj->psz_object_type, psz_name, p_obj ); + free( psz_name ); + } else MainBoxWrite( p_intf, (*l)++, 1 + 2 * i_level, "%s (%o)", p_obj->psz_object_type, p_obj ); @@ -1470,7 +1456,7 @@ static void Redraw( intf_thread_t *p_intf, time_t *t_last_refresh ) { intf_sys_t *p_sys = p_intf->p_sys; input_thread_t *p_input = p_sys->p_input; - playlist_t *p_playlist = pl_Hold( p_intf ); + playlist_t *p_playlist = pl_Get( p_intf ); int y = 0; int h; int y_end; @@ -1486,7 +1472,7 @@ static void Redraw( intf_thread_t *p_intf, time_t *t_last_refresh ) memset( psz_title, ' ', mid ); if( p_sys->b_color ) wcolor_set( p_sys->w, C_TITLE, NULL ); - snprintf( &psz_title[mid], i_size, "VLC media player "PACKAGE_VERSION ); + strlcpy( &psz_title[mid], "VLC media player "PACKAGE_VERSION, i_size ); mvnprintw( y, 0, COLS, "%s", psz_title ); attroff( A_REVERSE ); y += 2; @@ -1534,10 +1520,10 @@ static void Redraw( intf_thread_t *p_intf, time_t *t_last_refresh ) /* Position */ var_Get( p_input, "time", &val ); - msecstotimestr( buf1, val.i_time / 1000 ); + secstotimestr( buf1, val.i_time / CLOCK_FREQ ); var_Get( p_input, "length", &val ); - msecstotimestr( buf2, val.i_time / 1000 ); + secstotimestr( buf2, val.i_time / CLOCK_FREQ ); mvnprintw( y++, 0, COLS, _(" Position : %s/%s (%.2f%%)"), buf1, buf2, p_sys->f_slider ); @@ -1550,7 +1536,8 @@ static void Redraw( intf_thread_t *p_intf, time_t *t_last_refresh ) { int i_title_count = var_CountChoices( p_input, "title" ); if( i_title_count > 0 ) - mvnprintw( y++, 0, COLS, _(" Title : %d/%d"), val.i_int, i_title_count ); + mvnprintw( y++, 0, COLS, _(" Title : %"PRId64"/%d"), + val.i_int, i_title_count ); } /* Chapter */ @@ -1558,7 +1545,8 @@ static void Redraw( intf_thread_t *p_intf, time_t *t_last_refresh ) { int i_chapter_count = var_CountChoices( p_input, "chapter" ); if( i_chapter_count > 0 ) - mvnprintw( y++, 0, COLS, _(" Chapter : %d/%d"), val.i_int, i_chapter_count ); + mvnprintw( y++, 0, COLS, _(" Chapter : %"PRId64"/%d"), + val.i_int, i_chapter_count ); } } else @@ -1759,7 +1747,7 @@ static void Redraw( intf_thread_t *p_intf, time_t *t_last_refresh ) for( i=0; i= y_end ) break; - char *psz_meta = p_item->p_meta->ppsz_meta[i]; + const char *psz_meta = vlc_meta_Get( p_item->p_meta, i ); if( psz_meta && *psz_meta ) { const char *psz_meta_title; @@ -1986,13 +1974,13 @@ static void Redraw( intf_thread_t *p_intf, time_t *t_last_refresh ) MainBoxWrite( p_intf, l, 1, _("+-[Incoming]")); SHOW_ACS( 1, ACS_ULCORNER ); SHOW_ACS( 2, ACS_HLINE ); l++; if( p_sys->b_color ) wcolor_set( p_sys->w, C_DEFAULT, NULL ); - MainBoxWrite( p_intf, l, 1, _("| input bytes read : %8.0f kB"), - (float)(p_item->p_stats->i_read_bytes)/1000 ); + MainBoxWrite( p_intf, l, 1, _("| input bytes read : %8.0f KiB"), + (float)(p_item->p_stats->i_read_bytes)/1024 ); SHOW_ACS( 1, ACS_VLINE ); l++; MainBoxWrite( p_intf, l, 1, _("| input bitrate : %6.0f kb/s"), (float)(p_item->p_stats->f_input_bitrate)*8000 ); - MainBoxWrite( p_intf, l, 1, _("| demux bytes read : %8.0f kB"), - (float)(p_item->p_stats->i_demux_read_bytes)/1000 ); + MainBoxWrite( p_intf, l, 1, _("| demux bytes read : %8.0f KiB"), + (float)(p_item->p_stats->i_demux_read_bytes)/1024 ); SHOW_ACS( 1, ACS_VLINE ); l++; MainBoxWrite( p_intf, l, 1, _("| demux bitrate : %6.0f kb/s"), (float)(p_item->p_stats->f_demux_bitrate)*8000 ); @@ -2007,13 +1995,13 @@ static void Redraw( intf_thread_t *p_intf, time_t *t_last_refresh ) MainBoxWrite( p_intf, l, 1, _("+-[Video Decoding]")); SHOW_ACS( 1, ACS_LTEE ); SHOW_ACS( 2, ACS_HLINE ); l++; if( p_sys->b_color ) wcolor_set( p_sys->w, C_DEFAULT, NULL ); - MainBoxWrite( p_intf, l, 1, _("| video decoded : %5i"), + MainBoxWrite( p_intf, l, 1, _("| video decoded : %"PRId64), p_item->p_stats->i_decoded_video ); SHOW_ACS( 1, ACS_VLINE ); l++; - MainBoxWrite( p_intf, l, 1, _("| frames displayed : %5i"), + MainBoxWrite( p_intf, l, 1, _("| frames displayed : %"PRId64), p_item->p_stats->i_displayed_pictures ); SHOW_ACS( 1, ACS_VLINE ); l++; - MainBoxWrite( p_intf, l, 1, _("| frames lost : %5i"), + MainBoxWrite( p_intf, l, 1, _("| frames lost : %"PRId64), p_item->p_stats->i_lost_pictures ); SHOW_ACS( 1, ACS_VLINE ); l++; DrawEmptyLine( p_sys->w, p_sys->i_box_y + l - p_sys->i_box_start, 1, COLS - 2 ); @@ -2026,13 +2014,13 @@ static void Redraw( intf_thread_t *p_intf, time_t *t_last_refresh ) MainBoxWrite( p_intf, l, 1, _("+-[Audio Decoding]")); SHOW_ACS( 1, ACS_LTEE ); SHOW_ACS( 2, ACS_HLINE ); l++; if( p_sys->b_color ) wcolor_set( p_sys->w, C_DEFAULT, NULL ); - MainBoxWrite( p_intf, l, 1, _("| audio decoded : %5i"), + MainBoxWrite( p_intf, l, 1, _("| audio decoded : %"PRId64), p_item->p_stats->i_decoded_audio ); SHOW_ACS( 1, ACS_VLINE ); l++; - MainBoxWrite( p_intf, l, 1, _("| buffers played : %5i"), + MainBoxWrite( p_intf, l, 1, _("| buffers played : %"PRId64), p_item->p_stats->i_played_abuffers ); SHOW_ACS( 1, ACS_VLINE ); l++; - MainBoxWrite( p_intf, l, 1, _("| buffers lost : %5i"), + MainBoxWrite( p_intf, l, 1, _("| buffers lost : %"PRId64), p_item->p_stats->i_lost_abuffers ); SHOW_ACS( 1, ACS_VLINE ); l++; DrawEmptyLine( p_sys->w, p_sys->i_box_y + l - p_sys->i_box_start, 1, COLS - 2 ); @@ -2045,8 +2033,8 @@ static void Redraw( intf_thread_t *p_intf, time_t *t_last_refresh ) if( p_sys->b_color ) wcolor_set( p_sys->w, C_DEFAULT, NULL ); MainBoxWrite( p_intf, l, 1, _("| packets sent : %5i"), p_item->p_stats->i_sent_packets ); SHOW_ACS( 1, ACS_VLINE ); l++; - MainBoxWrite( p_intf, l, 1, _("| bytes sent : %8.0f kB"), - (float)(p_item->p_stats->i_sent_bytes)/1000 ); + MainBoxWrite( p_intf, l, 1, _("| bytes sent : %8.0f KiB"), + (float)(p_item->p_stats->i_sent_bytes)/1024 ); SHOW_ACS( 1, ACS_VLINE ); l++; MainBoxWrite( p_intf, l, 1, _("\\ sending bitrate : %6.0f kb/s"), (float)(p_item->p_stats->f_send_bitrate*8)*1000 ); @@ -2180,7 +2168,7 @@ static void Redraw( intf_thread_t *p_intf, time_t *t_last_refresh ) DrawEmptyLine( p_sys->w, 7, 1, COLS-2 ); if( p_sys->psz_search_chain ) { - if( strlen( p_sys->psz_search_chain ) == 0 && + if( *p_sys->psz_search_chain == '\0' && p_sys->psz_old_search != NULL ) { /* Searching next entry */ @@ -2209,13 +2197,12 @@ static void Redraw( intf_thread_t *p_intf, time_t *t_last_refresh ) refresh(); *t_last_refresh = time( 0 ); - pl_Release( p_intf ); } static playlist_item_t *PlaylistGetRoot( intf_thread_t *p_intf ) { intf_sys_t *p_sys = p_intf->p_sys; - playlist_t *p_playlist = pl_Hold( p_intf ); + playlist_t *p_playlist = pl_Get( p_intf ); playlist_item_t *p_item; switch( p_sys->i_current_view ) @@ -2226,14 +2213,13 @@ static playlist_item_t *PlaylistGetRoot( intf_thread_t *p_intf ) default: p_item = p_playlist->p_root_onelevel; } - pl_Release( p_intf ); return p_item; } static void PlaylistRebuild( intf_thread_t *p_intf ) { intf_sys_t *p_sys = p_intf->p_sys; - playlist_t *p_playlist = pl_Hold( p_intf ); + playlist_t *p_playlist = pl_Get( p_intf ); PL_LOCK; @@ -2246,8 +2232,6 @@ static void PlaylistRebuild( intf_thread_t *p_intf ) p_sys->b_need_update = false; PL_UNLOCK; - - pl_Release( p_intf ); } static void PlaylistAddNode( intf_thread_t *p_intf, playlist_item_t *p_node, @@ -2303,10 +2287,9 @@ static int PlaylistChanged( vlc_object_t *p_this, const char *psz_variable, VLC_UNUSED(p_this); VLC_UNUSED(psz_variable); VLC_UNUSED(oval); VLC_UNUSED(nval); intf_thread_t *p_intf = (intf_thread_t *)param; - playlist_t *p_playlist = pl_Hold( p_intf ); + playlist_t *p_playlist = pl_Get( p_intf ); p_intf->p_sys->b_need_update = true; p_intf->p_sys->p_node = playlist_CurrentPlayingItem(p_playlist) ? playlist_CurrentPlayingItem(p_playlist)->p_parent : NULL; - pl_Release( p_intf ); return VLC_SUCCESS; } @@ -2375,13 +2358,12 @@ static void Eject( intf_thread_t *p_intf ) * If it's neither of these, then return */ - playlist_t * p_playlist = pl_Hold( p_intf ); + playlist_t * p_playlist = pl_Get( p_intf ); PL_LOCK; if( playlist_CurrentPlayingItem(p_playlist) == NULL ) { PL_UNLOCK; - pl_Release( p_intf ); return; } @@ -2389,9 +2371,9 @@ static void Eject( intf_thread_t *p_intf ) if( psz_name ) { - if( !strncmp(psz_name, "dvd://", 4) ) + if( !strncmp(psz_name, "dvd://", 6) ) { - switch( psz_name[strlen("dvd://")] ) + switch( psz_name[6] ) { case '\0': case '@': @@ -2403,23 +2385,23 @@ static void Eject( intf_thread_t *p_intf ) break; } } - else if( !strncmp(psz_name, VCD_MRL, strlen(VCD_MRL)) ) + else if( !strncmp(psz_name, "vcd://", 6) ) { - switch( psz_name[strlen(VCD_MRL)] ) + switch( psz_name[6] ) { case '\0': case '@': - psz_device = config_GetPsz( p_intf, VCD_MRL ); + psz_device = config_GetPsz( p_intf, "vcd" ); break; default: /* Omit the beginning MRL-selector characters */ - psz_device = strdup( psz_name + strlen(VCD_MRL) ); + psz_device = strdup( psz_name + 6 ); break; } } - else if( !strncmp(psz_name, CDDA_MRL, strlen(CDDA_MRL) ) ) + else if( !strncmp(psz_name, "cdda://", 7 ) ) { - switch( psz_name[strlen(CDDA_MRL)] ) + switch( psz_name[7] ) { case '\0': case '@': @@ -2427,7 +2409,7 @@ static void Eject( intf_thread_t *p_intf ) break; default: /* Omit the beginning MRL-selector characters */ - psz_device = strdup( psz_name + strlen(CDDA_MRL) ); + psz_device = strdup( psz_name + 7 ); break; } } @@ -2441,7 +2423,6 @@ static void Eject( intf_thread_t *p_intf ) if( psz_device == NULL ) { - pl_Release( p_intf ); return; } @@ -2464,8 +2445,6 @@ static void Eject( intf_thread_t *p_intf ) } free( psz_device ); - pl_Release( p_intf ); - return; } static int comp_dir_entries( const void *pp_dir_entry1, @@ -2493,7 +2472,7 @@ static void ReadDir( intf_thread_t *p_intf ) char *psz_entry; /* Open the dir */ - p_current_dir = utf8_opendir( p_sys->psz_current_dir ); + p_current_dir = vlc_opendir( p_sys->psz_current_dir ); if( p_current_dir == NULL ) { @@ -2515,7 +2494,7 @@ static void ReadDir( intf_thread_t *p_intf ) p_sys->i_dir_entries = 0; /* while we still have entries in the directory */ - while( ( psz_entry = utf8_readdir( p_current_dir ) ) != NULL ) + while( ( psz_entry = vlc_readdir( p_current_dir ) ) != NULL ) { #if defined( S_ISDIR ) struct stat stat_data; @@ -2546,7 +2525,7 @@ static void ReadDir( intf_thread_t *p_intf ) } #if defined( S_ISDIR ) - if( !utf8_stat( psz_uri, &stat_data ) + if( !vlc_stat( psz_uri, &stat_data ) && S_ISDIR(stat_data.st_mode) ) /*#elif defined( DT_DIR ) if( p_dir_content->d_type & DT_DIR )*/ @@ -2588,7 +2567,7 @@ static void ReadDir( intf_thread_t *p_intf ) static void PlayPause( intf_thread_t *p_intf ) { input_thread_t *p_input = p_intf->p_sys->p_input; - playlist_t *p_playlist = pl_Hold( p_intf ); + playlist_t *p_playlist = pl_Get( p_intf ); vlc_value_t val; if( p_input ) @@ -2606,8 +2585,6 @@ static void PlayPause( intf_thread_t *p_intf ) } else playlist_Play( p_playlist ); - - pl_Release( p_intf ); } /****************************************************************************