X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fcontrol%2Frc.c;h=dbab111df25fba783f6c0ccdc5532f2d3dadadda;hb=12ade3e3bc975d5426ba4af155b7372c31093b31;hp=a0934fe9048df98f3ebe9e5d26fe6de92990432e;hpb=3eccc27645f2e3b238da025f1a2230d8ae68d219;p=vlc diff --git a/modules/control/rc.c b/modules/control/rc.c index a0934fe904..dbab111df2 100644 --- a/modules/control/rc.c +++ b/modules/control/rc.c @@ -34,7 +34,6 @@ #include #include /* ENOMEM */ -#include #include #include @@ -48,10 +47,6 @@ #ifdef HAVE_UNISTD_H # include #endif - -#ifdef HAVE_SYS_TIME_H -# include -#endif #include #include @@ -131,7 +126,7 @@ struct intf_sys_t /* status changes */ vlc_mutex_t status_lock; - playlist_status_t i_last_state; + int i_last_state; playlist_t *p_playlist; bool b_input_buffering; @@ -220,7 +215,7 @@ static int Activate( vlc_object_t *p_this ) #ifndef WIN32 #if defined(HAVE_ISATTY) /* Check that stdin is a TTY */ - if( !var_InheritInteger( p_intf, "rc-fake-tty" ) && !isatty( 0 ) ) + if( !var_InheritBool( p_intf, "rc-fake-tty" ) && !isatty( 0 ) ) { msg_Warn( p_intf, "fd 0 is not a TTY" ); return VLC_EGENERIC; @@ -334,7 +329,7 @@ static int Activate( vlc_object_t *p_this ) p_intf->pf_run = Run; #ifdef WIN32 - p_intf->p_sys->b_quiet = var_InheritInteger( p_intf, "rc-quiet" ); + p_intf->p_sys->b_quiet = var_InheritBool( p_intf, "rc-quiet" ); if( !p_intf->p_sys->b_quiet ) { CONSOLE_INTRO_MSG; } #else CONSOLE_INTRO_MSG; @@ -444,10 +439,10 @@ static void RegisterCallbacks( intf_thread_t *p_intf ) static void Run( intf_thread_t *p_intf ) { input_thread_t * p_input = NULL; - playlist_t * p_playlist = pl_Hold( p_intf ); + playlist_t * p_playlist = pl_Get( p_intf ); char p_buffer[ MAX_LINE_LENGTH + 1 ]; - bool b_showpos = var_InheritInteger( p_intf, "rc-show-pos" ); + bool b_showpos = var_InheritBool( p_intf, "rc-show-pos" ); bool b_longhelp = false; int i_size = 0; @@ -463,7 +458,7 @@ static void Run( intf_thread_t *p_intf ) /* status callbacks */ /* Listen to audio volume updates */ - var_AddCallback( p_intf->p_libvlc, "volume-change", VolumeChanged, p_intf ); + var_AddCallback( p_playlist, "volume-change", VolumeChanged, p_intf ); #ifdef WIN32 /* Get the file descriptor of the console input */ @@ -504,7 +499,7 @@ static void Run( intf_thread_t *p_intf ) msg_rc( STATUS_CHANGE "( new input: %s )", psz_uri ); free( psz_uri ); msg_rc( STATUS_CHANGE "( audio volume: %d )", - config_GetInt( p_intf, "volume" )); + (int)config_GetInt( p_intf, "volume" )); } var_AddCallback( p_input, "intf-event", InputEvent, p_intf ); } @@ -517,10 +512,8 @@ static void Run( intf_thread_t *p_intf ) if( p_playlist ) { - PL_LOCK; - p_intf->p_sys->i_last_state = (int) PLAYLIST_STOPPED; + p_intf->p_sys->i_last_state = PLAYLIST_STOPPED; msg_rc( STATUS_CHANGE "( stop state: 0 )" ); - PL_UNLOCK; } } @@ -529,6 +522,8 @@ static void Run( intf_thread_t *p_intf ) { PL_LOCK; int status = playlist_Status( p_playlist ); + PL_UNLOCK; + if( p_intf->p_sys->i_last_state != status ) { if( status == PLAYLIST_STOPPED ) @@ -547,7 +542,6 @@ static void Run( intf_thread_t *p_intf ) msg_rc( STATUS_CHANGE "( pause state: 4 )" ); } } - PL_UNLOCK; } if( p_input && b_showpos ) @@ -746,38 +740,27 @@ static void Run( intf_thread_t *p_intf ) { case 'f': case 'F': + { + bool fs; + + if( !strncasecmp( psz_arg, "on", 2 ) ) + var_SetBool( p_playlist, "fullscreen", fs = true ); + else if( !strncasecmp( psz_arg, "off", 3 ) ) + var_SetBool( p_playlist, "fullscreen", fs = false ); + else + fs = var_ToggleBool( p_playlist, "fullscreen" ); + if( p_input ) { - vout_thread_t *p_vout; - p_vout = input_GetVout( p_input ); - + vout_thread_t *p_vout = input_GetVout( p_input ); if( p_vout ) { - vlc_value_t val; - bool b_update = false; - var_Get( p_vout, "fullscreen", &val ); - val.b_bool = !val.b_bool; - if( !strncmp( psz_arg, "on", 2 ) - && ( val.b_bool == true ) ) - { - b_update = true; - val.b_bool = true; - } - else if( !strncmp( psz_arg, "off", 3 ) - && ( val.b_bool == false ) ) - { - b_update = true; - val.b_bool = false; - } - else if( strncmp( psz_arg, "off", 3 ) - && strncmp( psz_arg, "on", 2 ) ) - b_update = true; - if( b_update ) var_Set( p_vout, "fullscreen", val ); + var_SetBool( p_vout, "fullscreen", fs ); vlc_object_release( p_vout ); } } break; - + } case 's': case 'S': ; @@ -805,9 +788,7 @@ static void Run( intf_thread_t *p_intf ) vlc_object_release( p_input ); } - pl_Release( p_intf ); - - var_DelCallback( p_intf->p_libvlc, "volume-change", VolumeChanged, p_intf ); + var_DelCallback( p_playlist, "volume-change", VolumeChanged, p_intf ); vlc_restorecancel( canc ); } @@ -919,7 +900,7 @@ static int VolumeChanged( vlc_object_t *p_this, char const *psz_cmd, vlc_mutex_lock( &p_intf->p_sys->status_lock ); msg_rc( STATUS_CHANGE "( audio volume: %d )", - config_GetInt( p_this, "volume") ); + (int)config_GetInt( p_this, "volume") ); vlc_mutex_unlock( &p_intf->p_sys->status_lock ); return VLC_SUCCESS; } @@ -1095,7 +1076,7 @@ static int Input( vlc_object_t *p_this, char const *psz_cmd, } else if ( !strcmp( psz_cmd, "normal" ) ) { - var_SetInteger( p_input, "rate", INPUT_RATE_DEFAULT ); + var_SetFloat( p_input, "rate", 1. ); i_error = VLC_SUCCESS; } else if ( !strcmp( psz_cmd, "frame" ) ) @@ -1203,10 +1184,12 @@ static int Input( vlc_object_t *p_this, char const *psz_cmd, for ( i = 0; i < val.p_list->i_count; i++ ) { if ( i_value == val.p_list->p_values[i].i_int ) - msg_rc( "| %i - %s *", val.p_list->p_values[i].i_int, + msg_rc( "| %"PRId64" - %s *", + val.p_list->p_values[i].i_int, text.p_list->p_values[i].psz_string ); else - msg_rc( "| %i - %s", val.p_list->p_values[i].i_int, + msg_rc( "| %"PRId64" - %s", + val.p_list->p_values[i].i_int, text.p_list->p_values[i].psz_string ); } var_FreeList( &val, &text ); @@ -1343,6 +1326,7 @@ static int Playlist( vlc_object_t *p_this, char const *psz_cmd, } else if (!strcmp( psz_cmd, "goto" ) ) { + PL_LOCK; int i_pos = atoi( newval.psz_string ); /* The playlist stores 2 times the same item: onelevel & category */ int i_size = p_playlist->items.i_size / 2; @@ -1355,11 +1339,12 @@ static int Playlist( vlc_object_t *p_this, char const *psz_cmd, p_item = p_parent = p_playlist->items.p_elems[i_pos*2-1]; while( p_parent->p_parent ) p_parent = p_parent->p_parent; - playlist_Control( p_playlist, PLAYLIST_VIEWPLAY, pl_Unlocked, + playlist_Control( p_playlist, PLAYLIST_VIEWPLAY, pl_Locked, p_parent, p_item ); } else msg_rc( _("Playlist has only %d elements"), i_size ); + PL_UNLOCK; } else if( !strcmp( psz_cmd, "stop" ) ) { @@ -1413,8 +1398,10 @@ static int Playlist( vlc_object_t *p_this, char const *psz_cmd, else if( !strcmp( psz_cmd, "sort" )) { + PL_LOCK; playlist_RecursiveNodeSort( p_playlist, p_playlist->p_root_onelevel, SORT_ARTIST, ORDER_NORMAL ); + PL_UNLOCK; } else if( !strcmp( psz_cmd, "status" ) ) { @@ -1427,10 +1414,12 @@ static int Playlist( vlc_object_t *p_this, char const *psz_cmd, msg_rc( STATUS_CHANGE "( new input: %s )", psz_uri ); free( psz_uri ); msg_rc( STATUS_CHANGE "( audio volume: %d )", - config_GetInt( p_intf, "volume" )); + (int)config_GetInt( p_intf, "volume" )); PL_LOCK; - switch( playlist_Status(p_playlist) ) + int status = playlist_Status(p_playlist); + PL_UNLOCK; + switch( status ) { case PLAYLIST_STOPPED: msg_rc( STATUS_CHANGE "( stop state: 5 )" ); @@ -1445,7 +1434,6 @@ static int Playlist( vlc_object_t *p_this, char const *psz_cmd, msg_rc( STATUS_CHANGE "( unknown state: -1 )" ); break; } - PL_UNLOCK; vlc_object_release( p_input ); } } @@ -1567,12 +1555,12 @@ static int VolumeMove( vlc_object_t *p_this, char const *psz_cmd, if ( !strcmp(psz_cmd, "volup") ) { - if ( aout_VolumeUp( p_this, i_nb_steps, &i_volume ) < 0 ) + if ( aout_VolumeUp( p_intf->p_sys->p_playlist, i_nb_steps, &i_volume ) < 0 ) i_error = VLC_EGENERIC; } else { - if ( aout_VolumeDown( p_this, i_nb_steps, &i_volume ) < 0 ) + if ( aout_VolumeDown( p_intf->p_sys->p_playlist, i_nb_steps, &i_volume ) < 0 ) i_error = VLC_EGENERIC; } osd_Volume( p_this ); @@ -1775,10 +1763,10 @@ static int AudioConfig( vlc_object_t *p_this, char const *psz_cmd, for ( i = 0; i < val.p_list->i_count; i++ ) { if ( i_value == val.p_list->p_values[i].i_int ) - msg_rc( "| %i - %s *", val.p_list->p_values[i].i_int, + msg_rc( "| %"PRId64" - %s *", val.p_list->p_values[i].i_int, text.p_list->p_values[i].psz_string ); else - msg_rc( "| %i - %s", val.p_list->p_values[i].i_int, + msg_rc( "| %"PRId64" - %s", val.p_list->p_values[i].i_int, text.p_list->p_values[i].psz_string ); } var_FreeList( &val, &text ); @@ -1886,42 +1874,43 @@ static int updateStatistics( intf_thread_t *p_intf, input_item_t *p_item ) /* Input */ msg_rc("%s", _("+-[Incoming]")); - msg_rc(_("| input bytes read : %8.0f kB"), - (float)(p_item->p_stats->i_read_bytes)/1000 ); + msg_rc(_("| input bytes read : %8.0f KiB"), + (float)(p_item->p_stats->i_read_bytes)/1024 ); msg_rc(_("| input bitrate : %6.0f kb/s"), (float)(p_item->p_stats->f_input_bitrate)*8000 ); - msg_rc(_("| demux bytes read : %8.0f kB"), - (float)(p_item->p_stats->i_demux_read_bytes)/1000 ); + msg_rc(_("| demux bytes read : %8.0f KiB"), + (float)(p_item->p_stats->i_demux_read_bytes)/1024 ); msg_rc(_("| demux bitrate : %6.0f kb/s"), (float)(p_item->p_stats->f_demux_bitrate)*8000 ); - msg_rc(_("| demux corrupted : %5i"), + msg_rc(_("| demux corrupted : %5"PRIi64), p_item->p_stats->i_demux_corrupted ); - msg_rc(_("| discontinuities : %5i"), + msg_rc(_("| discontinuities : %5"PRIi64), p_item->p_stats->i_demux_discontinuity ); msg_rc("|"); /* Video */ msg_rc("%s", _("+-[Video Decoding]")); - msg_rc(_("| video decoded : %5i"), + msg_rc(_("| video decoded : %5"PRIi64), p_item->p_stats->i_decoded_video ); - msg_rc(_("| frames displayed : %5i"), + msg_rc(_("| frames displayed : %5"PRIi64), p_item->p_stats->i_displayed_pictures ); - msg_rc(_("| frames lost : %5i"), + msg_rc(_("| frames lost : %5"PRIi64), p_item->p_stats->i_lost_pictures ); msg_rc("|"); /* Audio*/ msg_rc("%s", _("+-[Audio Decoding]")); - msg_rc(_("| audio decoded : %5i"), + msg_rc(_("| audio decoded : %5"PRIi64), p_item->p_stats->i_decoded_audio ); - msg_rc(_("| buffers played : %5i"), + msg_rc(_("| buffers played : %5"PRIi64), p_item->p_stats->i_played_abuffers ); - msg_rc(_("| buffers lost : %5i"), + msg_rc(_("| buffers lost : %5"PRIi64), p_item->p_stats->i_lost_abuffers ); msg_rc("|"); /* Sout */ msg_rc("%s", _("+-[Streaming]")); - msg_rc(_("| packets sent : %5i"), p_item->p_stats->i_sent_packets ); - msg_rc(_("| bytes sent : %8.0f kB"), - (float)(p_item->p_stats->i_sent_bytes)/1000 ); + msg_rc(_("| packets sent : %5"PRIi64), + p_item->p_stats->i_sent_packets ); + msg_rc(_("| bytes sent : %8.0f KiB"), + (float)(p_item->p_stats->i_sent_bytes)/1024 ); msg_rc(_("| sending bitrate : %6.0f kb/s"), (float)(p_item->p_stats->f_send_bitrate*8)*1000 ); msg_rc("|");