From 70c75214fa2cac6b5b4775eb627dc7c68825a2fc Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Kempf Date: Wed, 15 Oct 2008 18:24:01 +0200 Subject: [PATCH] [Qt] Fix crash when pressed play when input is DYYYYYING. Close #2196 --- modules/gui/qt4/input_manager.cpp | 23 ++++++++++++----------- modules/gui/qt4/input_manager.hpp | 5 ++++- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/modules/gui/qt4/input_manager.cpp b/modules/gui/qt4/input_manager.cpp index a5c029ebea..1c52d87c85 100644 --- a/modules/gui/qt4/input_manager.cpp +++ b/modules/gui/qt4/input_manager.cpp @@ -428,10 +428,13 @@ void InputManager::sliderUpdate( float new_pos ) void InputManager::togglePlayPause() { vlc_value_t state; - var_Get( p_input, "state", &state ); - state.i_int = ( state.i_int != PLAYING_S ) ? PLAYING_S : PAUSE_S; - var_Set( p_input, "state", state ); - emit statusChanged( state.i_int ); + if( hasInput() ) + { + var_Get( p_input, "state", &state ); + state.i_int = ( state.i_int != PLAYING_S ) ? PLAYING_S : PAUSE_S; + var_Set( p_input, "state", state ); + emit statusChanged( state.i_int ); + } } void InputManager::sectionPrev() @@ -741,18 +744,16 @@ void MainInputManager::prev() void MainInputManager::togglePlayPause() { - if( p_input == NULL ) - { + /* No input, play */ + if( !p_input ) playlist_Play( THEPL ); - return; - } - getIM()->togglePlayPause(); + else + getIM()->togglePlayPause(); } bool MainInputManager::teletextState() { - im = getIM(); - if( im->hasInput() ) + if( getIM()->hasInput() ) { const int i_teletext_es = var_GetInteger( getInput(), "teletext-es" ); const int i_spu_es = var_GetInteger( getInput(), "spu-es" ); diff --git a/modules/gui/qt4/input_manager.hpp b/modules/gui/qt4/input_manager.hpp index bbefa84b01..609790d918 100644 --- a/modules/gui/qt4/input_manager.hpp +++ b/modules/gui/qt4/input_manager.hpp @@ -65,6 +65,8 @@ public: class InputManager : public QObject { Q_OBJECT; + friend class MainInputManager; + public: InputManager( QObject *, intf_thread_t * ); virtual ~InputManager(); @@ -107,7 +109,6 @@ private: public slots: void setInput( input_thread_t * ); ///< Our controlled input changed void sliderUpdate( float ); ///< User dragged the slider. We get new pos - void togglePlayPause(); /* SpeedRate Rate Management */ void slower(); void faster(); @@ -125,6 +126,8 @@ public slots: /* A to B Loop */ void setAtoB(); +private slots: + void togglePlayPause(); signals: /// Send new position, new time and new length -- 2.20.1