X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Finput_manager.cpp;h=a009f483e148701eb182ddd549aafab587a2e734;hb=6ee1e193fd896ab9a4729fde14f009d9ce629815;hp=327e13a4e3e3012983140d269cd659439988a06c;hpb=22bafc1a64b214063b1074d9b322d6dbe3d6caf6;p=vlc diff --git a/modules/gui/qt4/input_manager.cpp b/modules/gui/qt4/input_manager.cpp index 327e13a4e3..a009f483e1 100644 --- a/modules/gui/qt4/input_manager.cpp +++ b/modules/gui/qt4/input_manager.cpp @@ -40,6 +40,7 @@ InputManager::InputManager( QObject *parent, intf_thread_t *_p_intf) : i_old_playing_status = END_S; old_name=""; p_input = NULL; + i_rate = 0; ON_TIMEOUT( update() ); } @@ -86,19 +87,13 @@ void InputManager::update() if( p_input->b_dead || p_input->b_die ) { emit positionUpdated( 0.0, 0, 0 ); - msg_Dbg( p_intf, "*********** NAV 0"); emit navigationChanged( 0 ); i_old_playing_status = 0; - emit statusChanged( 0 ); // 0 = STOPPED, 1 = PLAY, 2 = PAUSE + emit statusChanged( END_S ); // see vlc_input.h, input_state_e enum delInput(); return; } - if( !b_had_audio && b_has_audio ) - emit audioStarted(); - if( !b_had_video && b_has_video ) - emit videoStarted(); - /* Update position */ mtime_t i_length, i_time; float f_pos; @@ -106,8 +101,16 @@ void InputManager::update() i_time = var_GetTime( p_input, "time") / 1000000; f_pos = var_GetFloat( p_input, "position" ); emit positionUpdated( f_pos, i_time, i_length ); + + int i_new_rate = var_GetInteger( p_input, "rate"); + if( i_new_rate != i_rate ) + { + i_rate = i_new_rate; + /* Update rate */ + emit rateChanged( i_rate ); + } - /* Update disc status */ + /* Update navigation status */ vlc_value_t val; val.i_int = 0; var_Change( p_input, "title", VLC_VAR_CHOICESCOUNT, &val, NULL ); if( val.i_int > 0 ) @@ -116,12 +119,10 @@ void InputManager::update() var_Change( p_input, "chapter", VLC_VAR_CHOICESCOUNT, &val, NULL ); if( val.i_int > 0 ) { - msg_Dbg( p_intf, "******* CHAPTER"); emit navigationChanged( 1 ); // 1 = chapter, 2 = title, 0 = NO } else { - msg_Dbg( p_intf, "******* TITLE"); emit navigationChanged( 2 ); } } @@ -132,10 +133,15 @@ void InputManager::update() /* Update text */ QString text; - char *psz_name = input_item_GetName( input_GetItem( p_input ) ); + char *psz_name = input_item_GetTitle( input_GetItem( p_input ) ); char *psz_nowplaying = input_item_GetNowPlaying( input_GetItem( p_input ) ); char *psz_artist = input_item_GetArtist( input_GetItem( p_input ) ); + if( EMPTY_STR( psz_name ) ) + { + free( psz_name ); + psz_name = input_item_GetName( input_GetItem( p_input ) ); + } if( !EMPTY_STR( psz_nowplaying ) ) { text.sprintf( "%s - %s", psz_nowplaying, psz_name ); @@ -215,7 +221,7 @@ void InputManager::sectionNext() void InputManager::sectionMenu() { if( hasInput() ) - var_SetInteger( p_input, "title 0", 2); + var_SetInteger( p_input, "title 0", 2 ); } void InputManager::slower() @@ -236,6 +242,12 @@ void InputManager::normalRate() var_SetInteger( p_input, "rate", INPUT_RATE_DEFAULT ); } +void InputManager::setRate( int new_rate ) +{ + if( hasInput() ) + var_SetInteger( p_input, "rate", new_rate ); +} + /********************************************************************** * MainInputManager implementation. Wrap an input manager and * take care of updating the main playlist input @@ -326,7 +338,7 @@ static int ChangeAudio( vlc_object_t *p_this, const char *var, vlc_value_t o, { InputManager *im = (InputManager*)param; im->b_has_audio = true; - return 0; + return VLC_SUCCESS; } static int ChangeVideo( vlc_object_t *p_this, const char *var, vlc_value_t o, @@ -334,5 +346,5 @@ static int ChangeVideo( vlc_object_t *p_this, const char *var, vlc_value_t o, { InputManager *im = (InputManager*)param; im->b_has_video = true; - return 0; + return VLC_SUCCESS; }